项目需要连接某台具体服务端,如果连不上则实时提示,开始使用Timer实时检测
void timer_Tick(object sender, EventArgs e) { Ping pingSender = new Ping(); PingReply reply = pingSender.Send("192.168.1.104", 1000); if (reply.Status != IPStatus.Success) { Message.show("网络异常") } }
如果我Timer一直执行的话,会导致该程序的内存一直增长,后来测试发现不是Timer的问题,Timer一直运行不会影响内存,是在Timer中使用Ping导致问题,Ping后估计会有返回值,没有清除
后修改,把Ping pingSender = new Ping() 拿出来,添加一个PingCompleted事件,释放解决问题
void pingSender_PingCompleted(object sender, PingCompletedEventArgs e) { (sender as IDisposable).Dispose(); }