2017-08-25 58 views
0

我跑slow.Operation像導航Android應用程序,是一種由下述特別很slow.i使用定時器codes.now我想停止定時器當我點擊按鈕?如何做到這一點如何xamarin停止定時器task.delay安卓

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

} 
+0

如果你想要一個Timer,你可以控制爲什麼不使用實際的Timer類? – Jason

回答

1
using System.Timers; 

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

// to stop the Timer 
timer.Stop(); 
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. 
}