下面是一些代码
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);                
            }
private void PingCompletedCallBack(object sender, PingCompletedEventArgs e)
        {
               //ping处理
        }运行后发现虚拟内存不断增长,到最后引起程序异常,如何解决?

解决方案 »

  1.   

    ping对象是不可复用,参考下:
    http://msdn.microsoft.com/zh-cn/library/system.net.networkinformation.ping(v=vs.90).aspx
      

  2.   

    可以同时ping多个地址,但是每ping一次,就必须建一个新的ping对象,所以内存会涨的很快,即使回收下资源或者换其他的方式,比如socket
      

  3.   

    Thread.Sleep(1000) 沉睡下看能否减缓压力 让其自动释放
      

  4.   

    如题 我想每30秒ping监测所加的IP地址通不通(差不多二三十个IP地址吧) 并且还要将通与不通的缓存内容(像生存时间(TTL),缓冲区大小等) 改如何来做
      

  5.   

    直接调用cmd  ping不行吗?完事后打印结果
      

  6.   

    之前遇到过类似一个问题,别人问的。pingSender.SendAsync这个方法是异步的,还没运行结束下一个请求就又来了。SendAsync运行完了再运行下一次SendAsync吧。
    可以使用“递归回调”,回调里面也SendAsync
      

  7.   

    sunzongbao2007 你有递归回调的例子么