【问题标题】:Converting Timer class from java to c#: scheduling tasks将 Timer 类从 java 转换为 c#:调度任务
【发布时间】:2009-08-17 13:49:12
【问题描述】:

我正在将应用程序从 Java 移植到 C#,并且遇到了与 java.util.TimerSystem.Threading.Timer 之间的不同行为和功能相关的问题。 事实上,在 Timer 类的 Java 版本中,有一个用于调度任务的功能(在原始代码中使用),而在 .NET 版本中不存在,可以在其中调度一个任务(通过委托函数)一次。

是否有解决方案,甚至是一个小的类集来实现该功能?

我注意到存在多个调度库(一个例子是 Quartz),但我更喜欢一种可以最大限度地减少要使用的代码量的解决方案。

谢谢大家! :)

【问题讨论】:

    标签: c# java scheduling


    【解决方案1】:

    您可以使用任何计时器类。对于每个计划任务,创建一个新的计时器类,只需将 Interval 属性设置为 (ScheduledTime - DateTime.Now).TotalMilliseconds 并设置 AutoReset 属性为 false(或 Tick 事件的代码隐藏中的 Enabeld 属性为 false)。这将在指定的 ScheduledTime 执行一次您的代码。

    【讨论】:

    • 有时我向 StackOverflow 提出问题,就像我在现实生活中对朋友所做的那样:事实上,在我在这里写下它几分钟后,我详细阐述了一个与您在此处描述的解决方案类似的解决方案。 . :)
    【解决方案2】:

    .NET 中至少有 4 个计时器。您的简短回答:使用 System.Threading.Timer。我建议在 here 阅读有关计时器的信息,以及查看 System.Windows.Threading.DispatchTimer(WPF 的一部分),它可以在特定时间分派事件,但在 UI 线程上这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2020-01-02
      • 1970-01-01
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多