是的,C#中的異步操作可以通過使用CancellationToken類來實現任務取消。CancellationToken類提供了一種機制,允許您在異步操作期間取消該操作。以下是一個簡單的示例,演示了如何使用CancellationToken來取消異步操作:
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
// 模擬一個耗時的異步操作
await Task.Delay(5000, token);
Console.WriteLine("異步操作完成。");
}
}
在這個示例中,我們創建了一個CancellationTokenSource對象,然后將其Token屬性分配給一個CancellationToken對象。接下來,我們將CancellationToken對象傳遞給Task.Delay方法,以便在異步操作期間可以取消該操作。
要取消異步操作,只需調用CancellationTokenSource對象的Cancel方法即可。例如:
cts.Cancel();
當調用Cancel方法時,Task.Delay方法將拋出一個OperationCanceledException異常。要處理此異常,可以在異步操作中使用try-catch語句:
try
{
await Task.Delay(5000, token);
}
catch (OperationCanceledException)
{
Console.WriteLine("異步操作被取消。");
}
這樣,當調用Cancel方法時,程序將輸出“異步操作被取消。”而不是“異步操作完成。”