基本上我正在运行一个程序,它执行一个重复多次的方法(例如7次),但我需要一个选项来取消当前运行其中一个,但仍允许新的启动。
我的问题是,只要我点击取消按钮,程序就会结束。所以我似乎错过了一些东西。
主:
for(int i = 0; i < 7; i++)
{
cts = new CancellationTokenSource();
taskUbung = Task.Factory.StartNew(async() =>
{
await doSomething();
}, cts.Token);
}
按钮:
private void buttonSkipUbung_Click(object sender, RoutedEventArgs e)
{
cts.Cancel();
}
因此,如果我在第3轮doSomething()上按下按钮,剩下的4将永远不会执行。 为了我想要的行为,我需要改变什么?我可以使用一些布尔值并在doSomething()中返回,但我认为这样会更清晰,响应更快,如果有效的话。
答案 0 :(得分:0)
您需要在某种列表中跟踪您正在创建的令牌。否则你只记得最后一个,只在那个上打电话取消