所以这就是我的所作所为:
using (Ping pingSender = new Ping())
{
replys = pingSender.Send(otherPartyIP.Address).RoundtripTime.ToString();
}
所以这是每秒运行一次,但我想知道,这真的是最佳的。 即使每秒一次ping也可能是微观的,但要改进是值得努力的。
所以,这样做会更好,还是会更好,或者更糟(因为我认为它会在没有处置的情况下一直创造新的)
replys = new Ping().Send(otherPartyIP.Address).RoundtripTime.ToString();
但是,当我想起它时,最好在我启动应用程序时创建一个Ping(),并在我结束它时将其丢弃。
答案 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
被妥善处理。