定时器控制间隔
本文关键字:控制 定时器 | 更新日期: 2023-09-27 17:56:49
我在C#.net项目中使用了一个计时器控件,计时器间隔为5秒。在timer_tick方法中,我调用另一种计算方法,该方法需要 5 分钟才能完成。我的问题是timer_tick该方法将每 5 秒调用一次,还是等待上一个进程完成?在我的测试中,我在调用计算方法之前将当前时间写入输出窗口。所以,我发现它总是等待上一个过程完成。如果正确的话,那么,定时器间隔是干什么用的呢?我的测试代码是这样的,
private void timer1_Tick(object sender, EventArgs e)
{
Console.WriteLine(DateTime.Now.ToString());
CalculationMethod();
}
问候
印地
这完全取决于您使用的计时器类型!以下文章提供了 3 个框架计时器行为的全面指南:
http://msdn.microsoft.com/en-us/magazine/cc164015.aspx
有些人会保证恒定的刻度(尽其所能),其他人会跳过或暂停他们的刻度。
Tick 事件对 timer1_Tick
方法进行阻塞(同步)调用,因此如果方法需要很长时间,它将等待。它适用于可以在给定时间范围内完成的事情。
如果确实需要每 5 秒调用一次此方法,请在每次调用时为它们生成新线程:
private void timer1_Tick(object sender, EventArgs e)
{
Console.WriteLine(DateTime.Now.ToString());
Task.Factory.StartNew(() => CalculationMethod());
}
它等待是因为timer1_Tick
无法返回CalculationMethod
返回。如果你不想等待CalculationMethod
你应该把它实现为异步调用(例如在后台工作)。
查看此 MSDN 页面上的备注。计时器控件是单线程的,因此它将等待第一个事件完成。你应该看看计时器类