如何ping,获取ping号,并将其放在标签中

时间:2013-08-15 11:55:50

标签: c# ping dispose

所以这就是我的所作所为:

using (Ping pingSender = new Ping())
{
   replys = pingSender.Send(otherPartyIP.Address).RoundtripTime.ToString();
}

所以这是每秒运行一次,但我想知道,这真的是最佳的。 即使每秒一次ping也可能是微观的,但要改进是值得努力的。

所以,这样做会更好,还是会更好,或者更糟(因为我认为它会在没有处置的情况下一直创造新的)

replys = new Ping().Send(otherPartyIP.Address).RoundtripTime.ToString();

但是,当我想起它时,最好在我启动应用程序时创建一个Ping(),并在我结束它时将其丢弃。

2 个答案:

答案 0 :(得分:2)

你的两个例子是相同的..除了在使用Dispose()时调用using ..但是,它不在第二个例子中。

由于Ping对象正在重复使用..将它扩展到比你更宽的范围(我认为是某种Timer)绝对是个好主意。所以没有真正的案例将它移到更广泛的范围(也许是班级)。

答案 1 :(得分:1)

如果一个对象有一个Dispose - 方法,你总是需要Dispose这个对象,就像你做的那样

using (Ping pingSender = new Ping())
{
   replys = pingSender.Send(otherPartyIP.Address).RoundtripTime.ToString();
} 

using - 语句确保所有非托管资源都已正确解除分配。

如果您在程序的生命周期中使用该对象,您还可以使其成为您的类的成员并创建一个析构函数,如

~SurroundingClass(){
   if(!ping.IsDisposed){
      ping.Dispose();
   }  
}

当你的周围物体超出范围时,这将确保ping被妥善处理。