項目需要連接某臺具體服務(wù)端,如果連不上則實時提示,開始使用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("網(wǎng)絡(luò)異常") } }
如果我Timer一直執(zhí)行的話,會導(dǎo)致該程序的內(nèi)存一直增長,后來測試發(fā)現(xiàn)不是Timer的問題,Timer一直運行不會影響內(nèi)存,是在Timer中使用Ping導(dǎo)致問題,Ping后估計會有返回值,沒有清除
后修改,把Ping pingSender = new Ping() 拿出來,添加一個PingCompleted事件,釋放解決問題
void pingSender_PingCompleted(object sender, PingCompletedEventArgs e) { (sender as IDisposable).Dispose(); }
后續(xù)問題:
如果再一直ping的過程中,出現(xiàn)某次ping的時候timeout,就會出現(xiàn)錯誤,做修改,當ping的不成功數(shù)大于具體次數(shù)時才提出錯誤。
第二個問題,當有成千上萬臺電腦都在ping 某個IP時,會不會造成那個IP的電腦寬帶阻塞
大牛們,請指導(dǎo)
新聞熱點
疑難解答