先看我的代码 private void commTest()
{
using (System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping())
{
ping.PingCompleted += ping_PingCompleted;
ping.SendAsync(_ip, null);
}
}
private void ping_PingCompleted(object sender, System.Net.NetworkInformation.PingCompletedEventArgs e)
{
if (e.Cancelled)
{
_isConnected = false;
labelStatus.Text = "连接测试被取消";
return;
}
if (e.Error != null)
{
labelStatus.Text = e.Error.Message;
_isConnected = false;
return;
}
if (e.Reply.Status == System.Net.NetworkInformation.IPStatus.Success)
{
labelStatus.Text = "已连接";
_isConnected = true;
return;
}
else
{
labelStatus.Text = "连接错误";
_isConnected = false;
return;
}
}
这样写的话,在我自己的机器上试了很多次一点问题没有,但是用到客户的机器上ping另外一个机器就会直接进入e.cancelled分支。
请问这是为什么?
后来我在ping.SendAsync(_ip, null); 后面加了一个System.Threading.Thread.Sleep(2000);就没事了。
我觉得就算是超时报警也不应该是cancel啊,它直接报个错都行。ping类
{
using (System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping())
{
ping.PingCompleted += ping_PingCompleted;
ping.SendAsync(_ip, null);
}
}
private void ping_PingCompleted(object sender, System.Net.NetworkInformation.PingCompletedEventArgs e)
{
if (e.Cancelled)
{
_isConnected = false;
labelStatus.Text = "连接测试被取消";
return;
}
if (e.Error != null)
{
labelStatus.Text = e.Error.Message;
_isConnected = false;
return;
}
if (e.Reply.Status == System.Net.NetworkInformation.IPStatus.Success)
{
labelStatus.Text = "已连接";
_isConnected = true;
return;
}
else
{
labelStatus.Text = "连接错误";
_isConnected = false;
return;
}
}
这样写的话,在我自己的机器上试了很多次一点问题没有,但是用到客户的机器上ping另外一个机器就会直接进入e.cancelled分支。
请问这是为什么?
后来我在ping.SendAsync(_ip, null); 后面加了一个System.Threading.Thread.Sleep(2000);就没事了。
我觉得就算是超时报警也不应该是cancel啊,它直接报个错都行。ping类
解决方案 »
- 编译不可通过?short s1 = 1;short s2 = 2;short s3 = s1 + s2; why??
- Type类语法问题
- 问一下,怎么把 access里面的一条记录按字段写入不同的文本文件里面 (祝愿大家新年好)
- 我的.net环境为什么不行.大家帮我看看.
- 急:如何在C#中实现IObjectWithSite接口?
- 想问一下:假如个人或者公司用盗版的WINDOWS和盗版的VS.NET开发出来的小东东拿出去卖,被查到了分别会罚多少?严重吗?
- 求助
- 这样的错误,请高手帮忙解决!!
- 计算的问题
- C#关于数字验证码的问题,急急急!!!
- 关于正则表达式的问题
- C#有啥好点的异常记录的方法没
http://msdn.microsoft.com/zh-cn/library/system.net.networkinformation.ping.aspx
同时这个例子的疑惑也说明你对多线程的不理解,更多多线程内容可以参考我的博客:
http://blog.csdn.net/lizhi3186575/article/details/8991281