星空网 > 软件开发 > ASP.net

异步超时后直接返回

应用场景

     异步同时请求多个地址,获得返回的信息并输出,排除时间响应太久的以免造成不必要的时间等待。

   

异步超时后直接返回异步超时后直接返回
 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       List<string> urls = new List<string>() { "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<string> DownloadAllAsync(IEnumerable<string> urls)23     {24 25       var downloads = urls.Select(url => httpClient.GetStringAsync(url));26       Task<string>[] 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<string> t1 = GetString("http://www.baidu.com");37       Task<string> t2 = GetString("http://www.360.com");38       Task<string> t3 = GetString("http://www.github.com");39      40       Task<string>[] arr = new Task<string>[] { 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<string> GetString(string str)47     {48       return await httpClient.GetStringAsync(str);49 50     }

View Code

 

 

源码




原标题:异步超时后直接返回

关键词:异步

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流