将Timer类从java转换为c#:调度任务

时间:2009-08-17 13:49:12

标签: c# java scheduling

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

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

我注意到存在几个调度库(例如Quartz),但我更倾向于使用最小化代码量的解决方案。

谢谢大家! :)

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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