namespace cancelAsync { internal class Program { static async Task Main(string[] args) { CancellationTokenSource cts = new CancellationTokenSource(); cts.CancelAfter(TimeSpan.FromSeconds(2)); await DownloadAsync("http://baidu.com", 200, cts.Token); } static async Task DownloadAsync(string url, int num, CancellationToken cancellationToken) { using (var client = new HttpClient()) { for (int i = 0; i < num; i++) { string html = await client.GetStringAsync(url); Console.WriteLine($"{DateTime.Now}: {html}"); if (cancellationToken.IsCancellationRequested) { Console.WriteLine($"{DateTime.Now}: 异步取消完成"); break; } } } } } }