做了一个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多个地址 

解决方案 »

  1.   

    我用Process类调用ping命令在控制台执行,完全没有内存释放的问题,每次执行后就自动释放,执行结果让程序捕获判断即可。
      

  2.   

    亲:你的异步线程Thread,释放了吗?
      

  3.   

        class Program
        {
            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);
                }
            }
        }
      

  4.   

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