【问题标题】:Calling events after a specified interval of time在指定的时间间隔后调用事件
【发布时间】:2012-12-16 02:07:51
【问题描述】:

所以这是我的程序的细分。它是一种测量指定端口上服务器延迟的工具。

所以目前我有一个手动检查来查找特定端口上的服务器。然后我每 500 毫秒 ping 这个服务器,并根据这个 ping 更新一些 GUI 元素。

我在后台线程中完成了 ping,每次 ping 后我都会调用 thread.sleep(500)。

为这些事件使用计时器会更好吗?

我想每 5 秒检查一次服务器,每 500 毫秒 ping 一次。

【问题讨论】:

  • “会更好吗..” 定义“更好”。一般来说,以最简单、最可维护的方式完成任务的方式就是最好的方式。

标签: c# multithreading timer


【解决方案1】:

使用 2 个计时器。休眠线程是可怕的性能。当 5 秒定时器执行时,禁用 500 毫秒定时器。执行完成后,启用它。这是最简单、最有效的方法,IMO。

或者,如果这无关紧要,请不要禁用计时器。两者都继续,你会没事的。

【讨论】:

    【解决方案2】:

    您可以使用 Task Scheduler api 并设置一个时间任务,该任务将在接下来的 5 秒后启动应用程序。很好的托管包装器:taskscheduler.codeplex.com

    【讨论】:

      【解决方案3】:

      当您使用睡眠时,您的任务需要多长时间并不重要。睡眠 500 毫秒,完成 5 小时的任务,然后再次睡眠。

      如果您使用计时器,则必须处理您的任务可能与下一个计时器事件的触发重叠的可能性。这让事情变得更加复杂。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        • 1970-01-01
        • 1970-01-01
        • 2016-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多