在BackgroundWorker中取消/超时Ping

时间:2013-11-21 21:15:21

标签: c# .net winforms backgroundworker ping

我正在做的是在后台工作程序中运行以下代码。我的问题是Ping.send()方法需要几秒钟(6-8)来回复Timeout。我想做的是,在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
}

2 个答案:

答案 0 :(得分:0)

您应该查看SendAsync方法,这样可以更容易处理(事实上,如果BackgroundWorker只是用于此ping,那么您可以完全处理它。

答案 1 :(得分:0)

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