应用场景
异步同时请求多个地址,获得返回的信息并输出,排除时间响应太久的以免造成不必要的时间等待。
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 TaskTest(); 6 Console.ReadLine(); 7 } 8 9 static async void ddd()10 {11 Stopwatch sw = new Stopwatch();12 sw.Start();13 Listurls = new List () { "http://www.baidu.com", "http://www.360.com" };14 string a = await DownloadAllAsync(urls);15 16 Console.WriteLine(a);17 sw.Stop();18 Console.WriteLine(sw.ElapsedMilliseconds);19 Console.ReadLine();20 }21 static HttpClient httpClient = new HttpClient();22 static async Task DownloadAllAsync(IEnumerable urls)23 {24 25 var downloads = urls.Select(url => httpClient.GetStringAsync(url));26 Task [] downloadTasks = downloads.ToArray();27 28 string[] pages = await Task.WhenAll(downloadTasks);29 30 return string.Concat(pages);31 }32 33 static void TaskTest()34 {35 var cts = new CancellationTokenSource(TimeSpan.FromMilliseconds(2000));36 Task t1 = GetString("http://www.baidu.com");37 Task t2 = GetString("http://www.360.com");38 Task t3 = GetString("http://www.github.com");39 40 Task [] arr = new Task [] { t1, t2, t3 };41 Task.WaitAll(arr,2000);42 foreach (var dd in arr)43 Console.WriteLine(dd.Result.ToString());44 }45 46 static async Task GetString(string str)47 {48 return await httpClient.GetStringAsync(str);49 50 }