我有這樣的應用程序:我是否需要創建一個新的CancellationTokenSource();任務取消後?
我有一個應用程序,其中一部分代碼運行在一個帶有定時器延遲的循環中。在應用程序的開始,我宣佈:
public static CancellationTokenSource tokenSource1 = new CancellationTokenSource();
public static bool Timer1Running;
這裏的循環區域:
while (App.runCardTimer && App.TimerSeconds > 0)
{
App.Timer1Running = true;
…
try
{
await Task.Delay(1000, App.tokenSource2.Token);
}
catch (TaskCanceledException ex) { }
App.TimerSeconds--;
App.Timer1Running = false;
}
我的應用程序響應在屏幕上點擊這樣的:
wordGrid.GestureRecognizers.Add(
new TapGestureRecognizer()
{
Command = new Command(() =>
{
App.TimerSeconds = 0;
if (App.tokenSource1 != null && App.Timer1Running)
{
App.tokenSource1.Cancel();
}
})
});
我很困惑關於取消令牌。有一次,我發出的聲明:
App.tokenSource1.Cancel();
我需要創建一個新的取消標記是這樣的:
tokenSource1 = new CancellationTokenSource();
或者,我可以繼續重用?
我可以在異常中執行此操作,或者可以在定時器的while循環之前執行此操作(即多次調用循環時) – Alan2