我希望在我的应用程序中触发一个事件,该事件在一天中的某个时间(例如下午 4:00)连续运行。我考虑每秒运行一次计时器,当时间等于下午 4:00 时运行该事件。这样可行。但我想知道是否有办法只在下午 4:00 回调一次,而不必继续检查。
像这样的事情怎么样,使用System.Threading.Timer http://msdn.microsoft.com/en-us/library/system.threading.timer.aspx class?
var t = new Timer(TimerCallback);
// Figure how much time until 4:00
DateTime now = DateTime.Now;
DateTime fourOClock = DateTime.Today.AddHours(16.0);
// If it's already past 4:00, wait until 4:00 tomorrow
if (now > fourOClock)
{
fourOClock = fourOClock.AddDays(1.0);
}
int msUntilFour = (int)((fourOClock - now).TotalMilliseconds);
// Set the timer to elapse only once, at 4:00.
t.Change(msUntilFour, Timeout.Infinite);
请注意,如果您使用System.Threading.Timer
,由指定的回调TimerCallback
将在线程池(非 UI)线程上执行 - 因此,如果您计划在 4:00 对 UI 执行某些操作,则必须适当地编组代码(例如,使用Control.Invoke
在 Windows 窗体应用程序中,或者Dispatcher.Invoke
在 WPF 应用程序中)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)