![](/img/trans.png)
[英]CancellationTokenSource does not cancel task after given timeout
[英]Do I need to create a new CancellationTokenSource(); after a task cancel?
我有一個這樣的應用程序:
我有一個應用程序,其中部分代碼在帶有計時器延遲的循環中運行。 在應用程序開始時,我聲明:
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();
還是我可以繼續重復使用?
如果要重置取消令牌的狀態,則無法執行此操作。 您必須重新創建CancellationTokenSource
。
CancellationToken
和任務都是一次性實體,使用后應丟棄。
您的基本方法是:
CancellationTokenSource
; CancellationToken
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.