问题:有一批静态IP,要对其是否通路状态进行PING命令。声明一个Ping的实例p1,然后在一个循环里连续调用SendAsync方法,则会报出错误【异步调用已在进行中。必须先完成或者取消此调用,然后才能调用此方法。】
代码如下:
private void button2_Click(object sender, EventArgs e)
{
List<string> lstIP = new List<string>();
Ping p1 = new Ping();
lstIP.Add("192.168.0.1");
lstIP.Add("192.168.0.2");
lstIP.Add("192.168.0.3");
lstIP.Add("192.168.0.4");
lstIP.Add("192.168.0.5");
lstIP.Add("192.168.0.6");
lstIP.Add("192.168.0.7");
lstIP.Add("192.168.0.8"); //设置PingCompleted事件处理程序
p1.PingCompleted += new PingCompletedEventHandler(this.PingCompletedCallBack);
for (int i = 0; i < lstIP.Count ; i++)
{
p1.SendAsync(lstIP[i], i);
}
}
private void PingCompletedCallBack(object sender, PingCompletedEventArgs e)
{
//do something
}
因为IP数量很多,总不能一条一条PING,希望能同时PING多个IP地址。不知道,哪位大侠有好办法?
代码如下:
private void button2_Click(object sender, EventArgs e)
{
List<string> lstIP = new List<string>();
Ping p1 = new Ping();
lstIP.Add("192.168.0.1");
lstIP.Add("192.168.0.2");
lstIP.Add("192.168.0.3");
lstIP.Add("192.168.0.4");
lstIP.Add("192.168.0.5");
lstIP.Add("192.168.0.6");
lstIP.Add("192.168.0.7");
lstIP.Add("192.168.0.8"); //设置PingCompleted事件处理程序
p1.PingCompleted += new PingCompletedEventHandler(this.PingCompletedCallBack);
for (int i = 0; i < lstIP.Count ; i++)
{
p1.SendAsync(lstIP[i], i);
}
}
private void PingCompletedCallBack(object sender, PingCompletedEventArgs e)
{
//do something
}
因为IP数量很多,总不能一条一条PING,希望能同时PING多个IP地址。不知道,哪位大侠有好办法?
解决方案 »
- C# 处理图片问题 缩小 旋转
- C#列举ACCESS2007(ACCDB)中的表名和表结构.....
- VS 2008 (C#)怎么查看微软为我们提供的方法或类的源码?
- 为什么没有我的VS2005没有sqlConnection、Command等控件
- 智能设备应用程序不能调用一个Web Service问题
- 急?动态绑定问题!!!!!!!!!!!!!!!!!
- 想请教一个问题
- 与flash socket 连接怎么不行
- 关于分页的性能问题!
- WPF程序,如何在当签窗口遍历子窗口的所有控件呢?比如说我有一个导航界面,选择不同按钮就会有不同的page,我怎么去遍历page里的控件呢?
- C# 插入音乐
- vml的webdings问题
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net.NetworkInformation;namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
List<string> lstIP = new List<string>();
Ping p1 = new Ping();
lstIP.Add("192.168.0.1");
lstIP.Add("192.168.0.2");
lstIP.Add("192.168.0.3");
lstIP.Add("192.168.0.4");
lstIP.Add("192.168.0.5");
lstIP.Add("192.168.0.6");
lstIP.Add("192.168.0.7");
lstIP.Add("192.168.0.8");
for (int i = 0; i < lstIP.Count; i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(work), lstIP[i]);
}
} void work(object obj)
{
string ip = obj as string;
System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping();
PingReply pr= p.Send(ip);
Console.WriteLine("{0} ping result :{1}", ip, pr.Status.ToString());
}
}
}