我正在将应用程序从Java移植到C#,我遇到了与java.util.Timer
和System.Threading.Timer
之间的不同行为和功能相关的问题。
实际上,在Timer类的Java版本中,有一个用于调度任务的功能(在原始代码中使用),这在.NET版本中不存在,在那里可以安排一个任务(通过委托功能)一段时间。
是否有解决方案,甚至是一个小类集来实现该功能?
我注意到存在几个调度库(例如Quartz),但我更倾向于使用最小化代码量的解决方案。
谢谢大家! :)
答案 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执行一次代码。