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,需要重新聲明一個對象.