gpt4 book ai didi

c# - 机器人计时器

转载 作者:行者123 更新时间:2023-11-30 14:02:02 24 4
gpt4 key购买 nike

我想在 android 2.2 的 C# monodroid 程序中使用计时器,但它不起作用。这是我的代码:

using System;
using System.Timers;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Util;

namespace MonoAndroidApplication1
{
[Activity(Label = "MonoAndroidApplication1", MainLauncher = true, Icon=drawable/icon")]
public class Activity1 : Activity
{
int count = 1;
TextView txv1;
System.Timers.Timer t1;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);

// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
txv1 = FindViewById<TextView>(Resource.Id.txv1);
DateTime dt = DateTime.Now;
txv1.Text = dt.ToShortTimeString();
t1 = new System.Timers.Timer(200);
t1.Elapsed += new ElapsedEventHandler(OnTimeEvent);
t1.Interval = 200;
t1.Enabled = true;
t1.Start();


}
private void OnTimeEvent(object source, ElapsedEventArgs e)
{
txv1.Text = count.ToString();
count++;
}
}
}

请帮助我。

最佳答案

System.Timers.Timer 将在单独的(非 UI)线程上运行。因此,您的 OnTimeEvent() 方法不正确,因为它将从非 UI 线程更新 UI 实例 (txv1)。

您需要使用 Activity.RunOnUiThread()从后台线程更新 UI:

private void OnTimeEvent(object source, ElapsedEventArgs e)
{
RunOnUiThread(delegate {
txv1.Text = count.ToString ();
count++;
});
}

关于c# - 机器人计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7097729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com