C# Task 暫停與取消


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM