求助:MVC4异步控制器中用异步PING功能检测网络连接状态遇到的问题

问题描述

小的是新手,在学习中想用MVC测试一下网络监控在异步控制器里使用了ping.SendPingAsync(ip,1000)这个方法去异步检测各网络现在的问题是,如果不使用AWAIT,异步线程还没结束时returnView()就执行了,前台页面得不到dict的数据;如果使用了AWAIT,因为在循环的时候SendPingAsync每次只PING一个IP,这样并没有起到异步作用,导制前台需要较长时间才能得到数据。查资料查得发吐,请问有没有办法把AWAIT弄到foreach外,让所有线程执行完后再返回结果?我不知道表达清楚没有,请各位伸出援手,谢谢啦namespaceIpTest.Controllers{publicclassIpTestController:AsyncController{////GET:/IpTest/publicActionResultIndex(){returnView();}publicasyncTask<ActionResult>IpTestAsync(){variplist=newstring[]{"www.baidu.com","www.163.com","www.sina.com","www.google.com","www.qq.com","192.168.7.1","61.139.2.69","192.168.17.1","www.icast.net","192.168.1.1","192.168.3.3"};Dictionary<string,string>dict=newDictionary<string,string>();//DateTimedt1=DateTime.Now;foreach(varipiniplist){using(Pingmyping=newPing()){PingReplyx=await(myping.SendPingAsync(ip,1000));dict.Add(ip,x.Status.ToString());}}//DateTimedt2=DateTime.Now;//ViewBag.time=newTimeSpan(dt2.Ticks-dt1.Ticks).ToString();ViewBag.dict=dict;returnView();}}}

解决方案

本帖最后由 x_image 于 2014-07-24 11:25:43 编辑
解决方案二:
这么多天都没人肯帮助一下不过自己搞定了,还是用SendPingAsync,结合Task集合就行了
解决方案三:

解决方案四:
能分享下代码看看嘛,为毛我调试的时候总是同步执行效果
解决方案五:
能分享一下代码吗,为毛我使用异步控制单步调试的时候跟同步没啥区别
解决方案六:
引用4楼ouchenghua的回复:

能分享一下代码吗,为毛我使用异步控制单步调试的时候跟同步没啥区别

代码在单位,回去发给你

时间: 2024-10-26 05:54:42

求助:MVC4异步控制器中用异步PING功能检测网络连接状态遇到的问题的相关文章

使用C#调用外部Ping命令获取网络连接情况

网络 以前在玩Windows 98的时候,几台电脑连起来,需要测试网络连接是否正常,经常用的一个命令就是Ping.exe.感觉相当实用. 现在 .net为我们提供了强大的功能来调用外部工具,并通过重定向输入.输出获取执行结果,下面就用一个例子来说明调用Ping.exe命令实现网络的检测,希望对.net初学者有所帮助. 首先,我们用使用Process类,来创建独立的进程,导入System.Diagnostics, using System.Diagnostics; 实例一个Process类,启动一

在ASP.NET MVC中如何使用异步控制器

在ASP.NET MVC中使用异步操作的时候,我有这么几个关注点.异步操作何时提高我应用的性能,什么时候没改善?     在ASP.NET MVC中到处使用异步操作真的好吗?    对于可等待的(awaitable)方法: 当查询数据库时(通过EF/BHibernate/其他的ORM)应该使用async/await关键字吗?    在一个单独的操作方法中,异步地查询数据库可以使用await关键字多少次? 当一个action必须执行多个独立的长期运行的操作时,异步action方法是很有用的. 假设

教你如何封装异步网络连接NSURLConnection实现带有百分比的下载

教你如何封装异步网络连接NSURLConnection实现带有百分比的下载 注:本教程需要你对block有着较为深刻的理解,且对如何封装对象有着一些经验.   也许你已经用惯了AFNetworking2.0,或者是ASIHTTPRequest(这个已经都不更新了,还不支持ARC,放弃为妙^_^),或者还有其他轻量级的开源代码.用着是很爽,但有时候我们只想实现简单的功能,用不着那么复杂,而且,那些开源代码太多,我们很难理解,那就尝试一下自己封装一个简单的吧. NSURLConnection有着两种

纯Javascript实现ping功能的方法

 这篇文章主要介绍了纯Javascript实现ping功能的方法,实例分析了javascript实现ping功能的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了纯Javascript实现ping功能的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

网站提供 下载方法-求助:网站如何实现APP地址功能

问题描述 求助:网站如何实现APP地址功能 请问如何实现在网站上提供APP下载的链接的方法(包含WAP版的网站).就想类似一号店.京东中的手机版中提供的方式.通过扫描2维码或者点击链接弹出APP.尤其是IOS的下载如何实现.急求,最好能有类似的源码.谢谢了.有的话能发一份到我的邮箱么,再次跪谢.40110235@qq.com 解决方案 ios不越狱没法安装下载的app,你提供一个指向app store的url.android的话,直接提供apk的链接就可以了.

《MonoTouch开发实践指南》一3.3 为视图控制器及其视图添加功能

3.3 为视图控制器及其视图添加功能 为了更好地理解视图控制器及其视图是如何工作的,下面将示例做得更有趣点儿.iOS设备有一个加速度计,可以通过测量重力来跟踪原点位于屏幕中心的坐标系中的x(右).y(上).z(屏幕外)方向.如图3-10所示,在SampleViewController中添加代码用来记录设备移动时的加速度数据.使用加速度计也将演示在iOS中另一个关键模式:委托.接下来的代码,可以简单地通过修改当前项目代码实现,不过在本书的示例代码中,该代码是作为单独的工程LMT3-2实现的. 注意

纯Javascript实现ping功能的方法_javascript技巧

本文实例讲述了纯Javascript实现ping功能的方法.分享给大家供大家参考.具体实现方法如下: function ping(ip) { var img = new Image(); var start = new Date().getTime(); var flag = false; var isCloseWifi = true; var hasFinish = false; img.onload = function() { if ( !hasFinish ) { flag = true

如何在Android中用OPENCV实现人脸检测,人脸识别等功能,如何实现,用什么方法?

问题描述 如何在Android中用OPENCV实现人脸检测,人脸识别等功能,如何实现,用什么方法? 如何在Android中用OPENCV实现人脸检测,人脸识别等功能,如何实现,用什么方法? 解决方案 请问您做的怎么样了?

AngularJS指令与控制器之间的交互功能示例_AngularJS

本文实例讲述了AngularJS指令与控制器之间的交互功能.分享给大家供大家参考,具体如下: 本节我们来看控制器与指令之间的交互 1.首先来看最简单的,在指令中调用父控制器的方法: <div ng-controller="myController1"> </div> app.controller('myController1',['$scope',function($scope){ $scope.load=function(){ console.log('正在加