【发布时间】:2010-12-02 08:49:03
【问题描述】:
我并不是真的在编写闹钟应用程序,但它有助于说明我的问题。
假设我的应用程序中有一个方法,并且我希望每小时整点调用此方法(例如,在晚上 7:00、晚上 8:00、晚上 9:00 等)。我可以创建一个计时器并将其间隔设置为 3600000,但最终这会与系统时钟不同步。或者我可以使用while() 循环和Thread.Sleep(n) 定期检查系统时间并在达到所需时间时调用该方法,但我也不喜欢这样(Thread.Sleep(n) 是对我来说有很大的代码味道)。
我正在寻找的是 .Net 中的一些方法,它可以让我传入未来的 DateTime 对象和方法委托或事件处理程序,但我找不到任何这样的东西。我怀疑 Win32 API 中有一个方法可以做到这一点,但我也找不到。
【问题讨论】:
-
您是否希望推出自己的 Quartz.Net? quartznet.sourceforge.net
-
@Austin:不,我只是在寻找一种简单的方法,就像我在上一段中描述的那样,而不必自己动手或使用一些第三方组件。
-
内置的 Windows 调度程序有一个可通过 PInvoke pinvoke.net/default.aspx/netapi32/NetScheduleJobAdd.html 访问的 API
-
@xcud:NetScheduleJobAdd 与我要查找的内容很接近,但它执行的是命令字符串而不是调用方法。