做了一个winform程序 功能是每隔10秒ping多个地址 看看通不通
现在结果是程序ping完之后我释放内存GC.Collect();GC.WaitForPendingFinalizers();结果是内存释放了 但是虚拟内存不断增加
我用的如下方法做的异步ping
byte[] buffer = new byte[Convert.ToInt32(CPublic.strDataSize)]; for (int i = 0; i < arPing.Count; i++)
{
object obj = arPing[i]; ArrayList alTemp = (ArrayList)obj; object obj1 = alTemp[alTemp.Count - 1];
string strPingIp = (string)obj1;
//构造Ping实例
Ping pingSender = new Ping(); pingSender.PingCompleted += new PingCompletedEventHandler(this.PingCompletedCallBack);//设置PingCompleted事件处理程序 pingSender.SendAsync(strPingIp, 12000, buffer, null);
//清理内存
FlushMemory();
}
private void PingCompletedCallBack(object sender, PingCompletedEventArgs e)
{
//ping的结果处理
}
求高手指点一下
或者如何做异步ping多个地址
现在结果是程序ping完之后我释放内存GC.Collect();GC.WaitForPendingFinalizers();结果是内存释放了 但是虚拟内存不断增加
我用的如下方法做的异步ping
byte[] buffer = new byte[Convert.ToInt32(CPublic.strDataSize)]; for (int i = 0; i < arPing.Count; i++)
{
object obj = arPing[i]; ArrayList alTemp = (ArrayList)obj; object obj1 = alTemp[alTemp.Count - 1];
string strPingIp = (string)obj1;
//构造Ping实例
Ping pingSender = new Ping(); pingSender.PingCompleted += new PingCompletedEventHandler(this.PingCompletedCallBack);//设置PingCompleted事件处理程序 pingSender.SendAsync(strPingIp, 12000, buffer, null);
//清理内存
FlushMemory();
}
private void PingCompletedCallBack(object sender, PingCompletedEventArgs e)
{
//ping的结果处理
}
求高手指点一下
或者如何做异步ping多个地址
{
static void Main(string[] args)
{
Process pi = new Process();
pi.StartInfo.FileName = "PING";
pi.StartInfo.Arguments = "192.168.0.1 -n 1";
pi.StartInfo.RedirectStandardOutput = true;//默认将输出到控制台,这里为true后可以程序捕获输出。
pi.StartInfo.UseShellExecute = false;
Console.WriteLine("测试与XXX的连通性,每隔30秒与192.168.0.1握手一次。");
while (true)
{
pi.Start();
Thread.Sleep(30000);
}
}
}