2010-12-15 63 views
1

我正在C#4.0中开发应用程序。我需要根据当前系统时间调用一个方法。我可以使用定时器控制吗?如果有人能告诉我如何做到这一点,那将会很棒。在C中使用Timer触发动作#

谢谢, Rakesh。

回答

2

您可以使用下面的代码

System.Timers.Timer _timer1 = new System.Timers.Timer(); 
_timer1.Elapsed += new ElapsedEventHandler(_timer1_Elapsed); 
//1 second 
_timer1.Interval = 1000; 
_timer1.Start(); 

//this event will be fired each 1 second 
private void _timer1_Elapsed(object sender, ElapsedEventArgs e) 
{ 
} 
1

你应该是可以的,是的。 Ghyath Serhal已经告诉你如何使用计时器课程。唯一缺少的是如何在特定的时间做到这一点。这应该是非常简单的 - 当您设置计时器时,只需花时间让您的操作发生和当前时间,即可在几秒钟内找到差异,并使用它来扩大时间间隔。您还需要将AutoReset属性设置为false,以便它不会立即再次开始倒计时。

如果您改变事件发生的时间,您只需要用触发器将其挂钩并将定时器更新为新时间即可。

编辑补充:如果有人要改变系统时间,可能会导致这个计划出现问题。我不确定您是否可以轻松地使用该功能重置定时器。我猜可能不相关。 :)

3

你可能(并不知道更多关于你的应用程序,我不能肯定地说)想看看它有点不同。您可以轻松编写一个应用程序,除了轮询什么时间以外,什么都不做,然后运行您需要做的任何事情,但这会让您的应用程序停滞不前,无所事事,而是大部分时间都会占用资源。

相反,也许你可以考虑创建一个计划任务,它可以让你在任何给定的时间运行你的应用程序。任务计划程序记录在http://msdn.microsoft.com/en-us/library/aa383614(VS.85).aspx处,并且在http://taskscheduler.codeplex.com/处有一个托管包装程序。 (它说它可以在XP或更好的版本上运行,所以希望它能够满足你的需求)。

祝你好运,

1

与计时器的问题是,它并不能保证所经过的事件将恰好在正确的时间被称为 - 所有你知道的是,它会一次比大后调用间隔。 解决方案取决于您感兴趣的时间的分辨率 - 例如,如果您需要检查每个小步骤,如果发生特定事件,您可以设置一个计时器,以每小时提起事件,然后使用DateTime.Now来检查如果系统时间是事件发生的时间。

一个好的策略是始终期望计时器已过时事件发生在Interval设置后几秒发生,具体取决于系统的繁忙程度。