在C#中使用CancellationTokenSource設定超時時間
阿新 • • 發佈:2021-06-17
C#中的CancellationTokenSource類可以通過CancelAfter方法設定超時時間,因此可以用於非同步方法中的超時設定。
測試程式碼:
class Program { static async Task Main(string[] args) { using (var tokenSource = new CancellationTokenSource()) { //設定超時時間 tokenSource.CancelAfter(1000); var stopWatch = newStopwatch(); stopWatch.Start(); await SampleFunctionAsync(tokenSource.Token); stopWatch.Stop(); if (tokenSource.Token.IsCancellationRequested) { Console.WriteLine(@"IsCancellationRequested"); } Console.WriteLine($"SampleFunctionAsync takes {stopWatch.ElapsedMilliseconds}ms."); } Console.ReadKey(); } private static async Task SampleFunctionAsync(CancellationToken token) { try { await Task.Delay(2000, token); } catch (Exception e) { Console.WriteLine($@"SampleFunctionAsync exception: {e.Message}"); } } }
測試結果: