在C#中使用Timer触发操作

时间:2010-12-15 09:15:46

标签: c# timer

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

谢谢, 勒凯什。

4 个答案:

答案 0 :(得分:3)

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

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

祝你好运,

答案 1 :(得分: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)
{
}

答案 2 :(得分:1)

你应该能够,是的。 Ghyath Serhal告诉你如何使用计时器类。唯一缺少的是如何在特定时间执行此操作。这应该很简单 - 当您设置计时器时,只需要花费您希望操作发生的时间和当前时间,找到以秒为单位的差异并使用它来推广间隔。您还需要将AutoReset属性设置为false,以便它不会立即再次开始倒计时。

如果你改变了事件发生的时间,你只需要用触发器挂钩并将计时器更新到新的时间。

编辑添加:如果有人要更改可能导致此计划出现问题的系统时间。我不确定你是否可以轻松利用它来重置你的计时器。我猜可能不相关。 :)

答案 3 :(得分:1)

计时器的问题在于它不能保证在恰当的时刻准确调用经过的事件 - 你所知道的是它会在大于间隔的时间之后被调用。 解决方案取决于您感兴趣的时间的分辨率 - 例如,如果您需要检查每个小菜单是否发生特定事件,您可以设置计时器以提高每个小步骤的事件,然后使用DateTime.Now检查是否系统时间是事件发生的时间。

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