问题描述
做了一个winform程序功能是每隔10秒ping多个地址看看通不通现在结果是程序ping完之后我释放内存GC.Collect();GC.WaitForPendingFinalizers();结果是内存释放了但是虚拟内存不断增加我用的如下方法做的异步pingbyte[]buffer=newbyte[Convert.ToInt32(CPublic.strDataSize)];for(inti=0;i<arPing.Count;i++){objectobj=arPing[i];ArrayListalTemp=(ArrayList)obj;objectobj1=alTemp[alTemp.Count-1];stringstrPingIp=(string)obj1;//构造Ping实例PingpingSender=newPing();pingSender.PingCompleted+=newPingCompletedEventHandler(this.PingCompletedCallBack);//设置PingCompleted事件处理程序pingSender.SendAsync(strPingIp,12000,buffer,null);//清理内存FlushMemory();}privatevoidPingCompletedCallBack(objectsender,PingCompletedEventArgse){//ping的结果处理}求高手指点一下或者如何做异步ping多个地址
解决方案
解决方案二:
虚拟内存增加不是问题,无需解决,
解决方案三:
越加越多到头之后不会报错么
解决方案四:
我用Process类调用ping命令在控制台执行,完全没有内存释放的问题,每次执行后就自动释放,执行结果让程序捕获判断即可。
解决方案五:
亲:你的异步线程Thread,释放了吗?
解决方案六:
classProgram{staticvoidMain(string[]args){Processpi=newProcess();pi.StartInfo.FileName="PING";pi.StartInfo.Arguments="192.168.0.1-n1";pi.StartInfo.RedirectStandardOutput=true;//默认将输出到控制台,这里为true后可以程序捕获输出。pi.StartInfo.UseShellExecute=false;Console.WriteLine("测试与XXX的连通性,每隔30秒与192.168.0.1握手一次。");while(true){pi.Start();Thread.Sleep(30000);}}}
解决方案七:
如题我想每30秒ping监测所加的IP地址通不通(差不多二三十个IP地址吧)并且还要将通与不通的缓存内容(像生存时间(TTL),缓冲区大小等)改如何来做