1.声明参数
1 CancellationTokenSource tokenSource = new CancellationTokenSource();
2 CancellationToken token = tokenSource.Token;
3 ManualResetEvent resetEvent = new ManualResetEvent(true);
2.定义Task
Task task = new Task(async () => {
while (true) {
if (token.IsCancellationRequested) {
return;
}
// 初始化为true时执行WaitOne不阻塞
resetEvent.WaitOne();
// Doing something.......
// 模拟等待100ms
await Task.Delay(100);
}
}, token);
task.Start();
3.暂停Task
resetEvent.Reset();
4.继续Task
resetEvent.Set();
5.取消Task
tokenSource.Cancel();
备注:任务取消后如果想重开任务,不能使用已经取消的token,需要重新声明一个对象.