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

silverlight——多次异步调用的顺序执行

遇到这样一个功能需求,对于后台的同一个服务调用多次,但要求传入的参数能够再一个执行完之后再进行另一个参数的执行。

由于silverlight支持的是异步调用机制,故无法控制服务调用何时返回。那么如果使得参数队列的调用顺序执行呢?

想了一个晚上,搞出了一种折中办法的办法。递归实现。

 1     ObservableCollection<taskVO> ocTask = new ObservableCollection<taskVO>(); 2     taskVO currentTask; 3     int len = 0,index = 0; 4     private void btn_click(object sender , RoutedEventArgs e){ 5        6      if(ocTask == null) { 7        return; 8       } 9      len = ocTask.Count();
11 currentTask = ocTask[index]; 12 13 index++;14 client.methodAsync(currentTask);15 }16 17 void client_methodCompleted(object sender , CompletedEventArgs e){
21 22 if(index >= len) 23 {24 return;25 }26 currentTask = ocTask[index];27 index++;28 client.methodAsync(currentTask);31 }

其中ocTask是要进行多次异步调用的参数队列。

在按钮事件中,只把第一个Task进行异步调用,在回调函数中,再把下一个Task进行异步调用,依次类推,直到最后一个参数执行完了,在Completed中进行Return,结束递归(这就是课本上所学的递归函数必须有终结条件,第一次把书本上的算法应用到实际,好开森开森^_^)

PS:

解决该功能不算解决了真正的异步队列顺序调用问题。本功能具有特殊性,多次异步调用的方法是同一个,造成了使用递归正好解决了这个问题。

但递归本身的局限性,也限制了异步队列不能过长,否则导致递归栈溢出。因此这个问题还有待更加完善的解法。




原标题:silverlight——多次异步调用的顺序执行

关键词:异步

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

意大利vat注册要多久-法国vat申请-意大利vat费用:https://www.kjdsnews.com/a/1303617.html
葡萄牙vat税率-葡萄牙vat税号-葡萄牙va土耳其:https://www.kjdsnews.com/a/1303618.html
欧洲vat申请需要多久-欧洲vat申请要多久下来-欧洲vat申请哪个国家好:https://www.kjdsnews.com/a/1303619.html
中国vat number-中国地图-中国竞彩网:https://www.kjdsnews.com/a/1303620.html
法国vat税率多少-德国vat税率-法国vat税号:https://www.kjdsnews.com/a/1303621.html
vat税号怎么申请-vat税号申请-vat增值税号怎么填:https://www.kjdsnews.com/a/1303622.html
黄果树瀑布景区景点 - 黄果树瀑布景区景点分布图:https://www.vstour.cn/a/408258.html
延边酒店(附近旅馆住宿50元):https://www.vstour.cn/a/409226.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流