C# BackgroundWorker中的取消/超时Ping

C# BackgroundWorker中的取消/超时Ping,c#,.net,winforms,backgroundworker,ping,C#,.net,Winforms,Backgroundworker,Ping,我所做的是在backgroundworker中运行以下代码。我的问题是Ping.send()方法需要几秒钟(6-8)才能回复超时。我想做的是,在x个时间量之后取消/杀死Ping.Send方法,或者,如果可能的话,让它自己超时,但在2-3秒内。我玩了一个计时器,但没能让它工作。有人对我应该怎么做有什么建议吗 编辑:当回复成功时,它会在一段相当长的时间内回复回来,我同意 Ping ping = new Ping(); byte[] buffer = new byte[bufferSize]; Pin

我所做的是在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毫秒的超时。

您已经提供了一个超时值…是的。我没有试图杀死后台工作程序。只是Ping.Send()如果可能的话。@HiTech您已经在做了……我看不出问题所在。我想如果我提供的超时值应该在10毫秒后超时。那么超时就不起作用了……因为我坐在那里等待大约8秒钟,在我的局域网上ping一台计算机。@Servy您现在看到问题了吗?虽然这样做可能有一些好处异步执行此操作时,同步和异步方法都已提供超时支持,因此没有必要执行此操作。@Servy-很好的一点-我想他需要某种取消按钮。