溫馨提示×

如何取消Async操作

小樊
161
2024-06-17 23:55:59
欄目: 編程語言

要取消一個異步操作,可以使用以下方法之一:

  1. 使用CancellationToken:在開始異步操作時,傳入一個CancellationToken參數,并在取消操作時調用該token的Cancel方法。在異步操作中檢查token是否已取消,如果是則立即停止操作。
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;

// 開始異步操作
Task.Run(async () => 
{
    await YourAsyncOperation(token);
}, token);

// 取消操作
cts.Cancel();
  1. 使用TaskCancellationSource:創建一個TaskCancellationSource對象,通過調用該對象的Cancel方法來取消異步操作。在異步操作中通過調用ThrowIfCancellationRequested方法來檢查是否已取消。
TaskCancellationSource cts = new TaskCancellationSource();

// 開始異步操作
Task.Run(async () => 
{
    await YourAsyncOperation();
}, cts.Token);

// 取消操作
cts.Cancel();
  1. 使用Timeout:在異步操作中設置一個超時時間,在超時后停止操作。
Task.Run(async () => 
{
    await Task.Delay(5000); // 模擬異步操作

    if (cts.Token.IsCancellationRequested)
    {
        // 已取消操作
        return;
    }

    // 繼續執行操作
}, cts.Token);

// 取消操作
cts.Cancel();

無論使用哪種方法,都需要在異步操作中檢查是否已取消,以確保及時停止操作。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女