计时器为什么不启动?

时间:2019-02-04 19:44:37

标签: c# android xamarin xamarin.android

简单的代码会增加一个数字并在texView中显示它,但是它不起作用,我不知道我的代码有什么问题...

这是我的代码:

protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);
        TextView textView = FindViewById<TextView>(Resource.Id.textView1);
        Timer timer1 = new Timer();
        timer1.Interval = 1000;
        timer1.Enabled = true;
        timer1.Start();
        timer1.Elapsed += (object sender, ElapsedEventArgs e) =>
         {
             x++;
             textView.Text = x.ToString();
         };
    }

1 个答案:

答案 0 :(得分:2)

由于未使用SynchronizingObject,System.Timers.Timer在线程池线程上调用了Elapsed,因此您不在UI / Main线程上(需要执行UI更新)。

因此,在事件中使用RunOnUiThread更新您的UI:

timer1.Elapsed += (object sender, ElapsedEventArgs e) =>
{
    x++;
    RunOnUiThread(() => button.Text = x.ToString());
};