私はこのようなアプリケーションを持っています:新しい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();
}
})
});
私は混乱していますキャンセルトークンについて私は文を発行すると:
tokenSource1 = new CancellationTokenSource();
または私は再利用し続けることができます。
App.tokenSource1.Cancel();
私はこのような新しいキャンセルトークンを作成する必要がありますか?
私は例外でこれを行うことができますか、あるいは、私はそれをタイマーのwhileループの直前に行うことができますか(そのループは複数回呼び出されます) – Alan2