如何在xamarin android中停止计时器task.delay

时间:2017-08-25 21:05:31

标签: c# android xamarin timer

我的Android应用程序运行缓慢。像导航这样的操作,特别是非常慢。我用下面的代码使用计时器。现在我想点击按钮时停止计时器?怎么做

void ChangedData()
{
    Task.Delay(500).ContinueWith(t =>
    {
        ChangedData();
    }, TaskScheduler.FromCurrentSynchronizationContext());

}

2 个答案:

答案 0 :(得分:1)

using System.Timers;

Timer timer = new Timer(500);
timer.Elapsed += (sender, e) => { ChangedData(); };
timer.Start();

// to stop the Timer
timer.Stop();

答案 1 :(得分:0)

在代码中的某处创建一个CancellationTokenSource。

var _cts = new System.Threading.CancellationTokenSource();

然后在方法中使用CancellationToken调用Task.Delay调用。

Task.Delay(500, _cts.Token)

要取消任务,只需调用CancellationTokenSource的取消方法

_cts.Cancel();

当任务被取消时,它将抛出TaskCanceledException。请记得抓住异常。

try
{
    Task.Delay(500, _cts.Token).ContinueWith(t =>
        {

            ChangedData();

        }, TaskScheduler.FromCurrentSynchronizationContext());
}
catch (TaskCanceledException ex)
{
    // Handle when task is cancelled.
}