繁体   English   中英

在BackgroundWorker中取消/超时Ping

[英]Cancel/Timeout Ping in BackgroundWorker

我正在做的是在backgroundworker中运行以下代码。 我的问题是Ping.send()方法需要几秒钟(6-8)才能用超时回复。 我想做的是,在x的时间后取消/杀死Ping.Send方法,或者,如果有可能自己超时,但要在2-3秒内完成。 我和一个计时器一起玩,但是我无法使它正常工作。 有人对我应该如何建议吗?

编辑:回复成功后,它会在相当长的时间内回复我可以接受的时间。

Ping ping = new Ping();
byte[] buffer = new byte[bufferSize];
PingOptions pingOpt = new PingOptions(128, true);
try
{              
    PingReply pingReply = ping.Send(PCName, 10, buffer, pingOpt);
    if (pingReply.Status == IPStatus.Success)
    {
        //Do Something
    }
    else                                 
    {
        //Do Something
    }
}
catch
{
    //Do Something
}

您应该查看SendAsync方法,这将使此方法更易于处理(实际上,如果BackgroundWorker仅在此ping中,那么您可能可以将其全部处置。

已经提供了超时。 在具有至少两个参数的所有重载中,第二个参数是超时(以毫秒为单位)。 您正在使用10毫秒的超时时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM