异步超时后直接返回

应用场景

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

 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         }

源码

时间: 2024-10-20 07:06:41

异步超时后直接返回的相关文章

[异步][事务][流程][设计]同步当场处理并返回处理结果,异步后如何返回. 如何解决?

举个例子1: 钱有100,两口子之前有约定要剩下90, 老公看到有100,花10元,花完以后因为事件异步,数据不一致,此时老婆刷新页面也看到100,再花10元.那最终是80元. 不符合用户的预期. 这个问题如何解决? 见http://www.jdon.com/46473#23145064 异步需要一个异步回调.(或者实现一个通知接口. 不如回调实现来的漂亮.) 异步需要事件 异步需要重试机制 昨天咨询了下我们的高T. 他认为是这样实现的: 这个场景在国外银行很常见,国外有夫妻卡. 先说说不用异步

ajax异步传输数据,return返回值为空

今天在项目中遇到了一个问题,就是在定义了一个函数drawHtml(),本意是想在函数运行结束后,返回拼接的字符串,可是函数运行结束后始终返回的是undefined 有BIG的代码: function drawHtml(){ var html =""; $.ajax({ type:'get', url:'http://localhost:63342/projectStudy/json/data.json', success:function(data){ var dataList = d

问答项目---账号密码异步校验后进行PHP校验

在做登陆的时候,通过异步校验后还需要通过PHP来校验账号和密码的正确性. PHP校验账号密码: public function login(){ if(!IS_POST){echo "页面不存在"; $this->redirect('index'); die();}; $username = I('post.username'); $pwd = I('post.password','','md5'); $code = I('post.code'); $obj = new \Thi

关于hibernate的session.createSQLQuery(sql)直接调用底层SQL后,返回结果集的问题

数据库中有如下信息name,sex张三.男李四.女通过Hibernate的  createSQLQuery 可以直接调用底层SQL语句如下:List list = (List)getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException,SQLException { Query query = sessio

jqGrid 编辑完数据后能返回到当前位置的方法

jqGrid 是一个js的jquery组件,虽然不轻便,但功能还是蛮强大的,也比较方便使用.在数据加载后,经常需要对其中的记录进行编辑,修改完后再返回时需要看到修改后的数据,一般采取重新加载的方法reloadGrid,但问题是列表中的数据因为重新加载之故,记录位置就不是原来的位置了,如果想继续定位在原来位置(keep position)可以采取如下方法: 1. 定义2个全局量: var selectedRowIndex = 0:  //记住记录号 var scrollPosition = 0;

Quartz misfireThreshold超时临界值的意义与任务超时后的处理策略

Quartz misfireThreshold超时临界值的意义与任务超时后的处理策略. 在配置quartz.properties有这么一个属性就是misfireThreshold,用来指定调度引擎设置触发器超时的"临界值". Quartz misfireThreshold超时临界值的意义与任务超时后的处理策略

解决SecureCRT连接linux超时后断开[转]

方法一: 从客户端入手 方法二: 从服务端入手 修改/etc/ssh/sshd_config配置文件 ClientAliveInterval 300(默认为0) 这个参数的是意思是每5分钟,服务器向客户端发一个消息,用于保持连接 service sshd reload 生效 解决SecureCRT连接linux超时后断开[转]

登陆成功后,返回登陆前的网址和删除服务器图片

登陆成功后,返回登陆前的网址 登陆前网站的cs的Page_Load方法中加入: protected void Page_Load(object sender, EventArgs e) { Session.Add("url", Request.Url.ToString()); } 登录网站的cs登录成功后: Response.Redirect(Session["url"].ToString());  删除服务器图片 GridView1绑定数据库删除图片例子: cs文

理解Promise.all,Promise.all与Promise.race的区别,如何让Promise.all在rejected后依然返回resolved状态

 壹 ? 引 我在 es6入门4--promise详解 这篇文章中有详细介绍Promise对象的用法,文章主题更偏向于对于Promise概念的理解与各方法基本使用介绍:而世上一个比较有趣的问题就是,即便按照前人提供的规则与方法去做一件事,也会因为未知的缘故产生新问题,这让人非常苦恼,但大多数情况都是因为自身理解不深刻导致:在昨天的工作中使用Promise.all的经历也是把我整的不轻(最后查出来是后台逻辑BUG...),这也是我想另起一篇文章专门介绍Promise.all与Promise.rac