可能重复:
如何向C#控制台应用程序添加计时器
实现计时器的最佳方法是什么?代码示例会很棒!对于这个问题,"最佳"被定义为最可靠(最少数次失火)和精确.如果我指定15秒的间隔,我希望每15秒调用一次目标方法,而不是每10到20秒调用一次.另一方面,我不需要纳秒精度.在这个例子中,该方法每14.51-15.49秒触发一次是可以接受的.
Dav*_*ych 309
使用该Timer
课程.
https://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.110).aspx
public static void Main()
{
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Interval = 5000;
aTimer.Enabled = true;
Console.WriteLine("Press \'q\' to quit the sample.");
while(Console.Read() != 'q');
}
// Specify what you want to happen when the Elapsed event is raised.
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Console.WriteLine("Hello World!");
}
Run Code Online (Sandbox Code Playgroud)
该Elapsed
事件将被升高的毫秒每X量,由指定的Interval
计时器对象上属性.它将调用Event Handler
您指定的方法,在上面的示例中OnTimedEvent
Jig*_*ker 41
通过使用System.Windows.Forms.Timer
课程,您可以实现您的需求.
System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
t.Interval = 15000; // specify interval time as you want
t.Tick += new EventHandler(timer_Tick);
t.Start();
void timer_Tick(object sender, EventArgs e)
{
//Call method
}
Run Code Online (Sandbox Code Playgroud)
通过使用stop()方法,您可以停止计时器.
t.Stop();
Run Code Online (Sandbox Code Playgroud)
Tig*_*ran 26
目前尚不清楚您要开发的应用程序类型(桌面,Web,控制台......)
一般的答案,如果你正在开发Windows.Forms
应用程序,是使用
System.Windows.Forms.Timer类.这样做的好处是它可以在UI
线程上运行,所以只需定义它,订阅它的Tick事件并每15秒运行一次代码就很简单了.
如果你做了其他的事情,那么windows形式(问题不清楚),你可以选择System.Timers.Timer,但是这个在其他线程上运行,所以如果你要对其Elapsed事件中的一些UI元素进行操作,你必须通过"调用"访问来管理它.