具有取消功能的非同步作業參考範例
利用cancellationtokensource 和 cancellationtoken 類別
執行非同步作業
private async Task TryTask()
{
CancellationTokenSource source = new CancellationTokenSource();
source.CancelAfter(TimeSpan.FromSeconds(1)) ;
Task<int> task = Task.Run(() => slowFunc(1, 2, source.Token), source.Token);
await task;
}
定義欲以非同步方式執行的工作
private int slowFunc(int a, int b, CancellationToken cancellationToken)
{
for (int i = 0; i < 20000; i++))
cancellationToken.ThrowIfCancellationRequested();
return a + b;
}
留言
張貼留言