zoukankan      html  css  js  c++  java
  • 异步超时后直接返回

    应用场景

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

       

     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

    源码

  • 相关阅读:
    常用的学生、课程、成绩、教师表的查询
    flutter 自定义TabBar
    Flutter 设置input边框
    Flutter ReorderableListView 可拖拽的列表
    Flutter NotificationListener 监听列表的滚动
    Flutter 使用Tabbar不要Title
    Nestjs 验证对象数组
    postman 发送数组
    JS面向切面编程AOP
    什么是匿名函数、什么是闭包函数?
  • 原文地址:https://www.cnblogs.com/cvol/p/5630781.html
Copyright © 2011-2022 走看看