【问题标题】:Cancel/Timeout Ping in BackgroundWorkerBackgroundWorker 中的取消/超时 Ping
【发布时间】:2013-11-21 21:15:20
【问题描述】:

我正在做的是在后台工作程序中运行以下代码。我的问题是 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
}

【问题讨论】:

  • 已经提供超时值...
  • 是的。我不是要杀死后台工作人员。如果可能的话,只需 Ping.Send()。
  • @HiTech 你已经在做什么了……我没看到问题。
  • 我想如果我提供的超时值应该在 10 毫秒后超时。然后超时不起作用...因为我坐等大约 8 秒 ping 我的局域网上的一台计算机。 @Servy 你现在看到问题了吗?

标签: c# .net winforms backgroundworker ping


【解决方案1】:

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

【讨论】:

  • 虽然异步执行此操作可能有一些优势,但同步和异步方法都已提供超时支持,因此没有需要执行此操作。跨度>
  • @Servy - 好点 - 我以为他想要某种取消按钮。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 2012-07-04
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多