【发布时间】:2018-02-09 15:46:00
【问题描述】:
我试图在下面给出的代码中找出问题所在。 timer 只为第一个实例调用该方法,但在 2500 ms 时间间隔后不调用它。有什么我遗漏的吗?下面是我的代码
public class Program
{
public void CheckStatus(object stateInfo)
{
Console.WriteLine("I am Executed");
}
public static void Main(string[] args)
{
try
{
Program p = new Program();
Console.WriteLine("Creating timer.\n");
var stateTimer = new Timer(state => p.CheckStatus(state), null, 0, 2500);
}
catch (Exception ex)
{
Console.WriteLine("Exception");
}
}
}
在上面的代码中,我试图在每 2500 毫秒后执行方法“CheckStatus”,并且对于第一次执行,它应该立即执行(将参数传递为 0) 我也尝试用时间跨度替换时间值,但它也没有为我工作
【问题讨论】:
-
计时器到期后不会重新启动。您需要告诉它重新启动。
-
我不想让计时器过期,我应该一直运行到我的应用程序运行为止
-
查看 MSDN,msdn.microsoft.com/en-us/library/… 听起来像
AutoReset属性就是你要找的。span> -
如果这是
Main的完整扩展,那么问题是你的程序在你有机会第二次执行计时器之前就退出了 -
有两个基本原因。 1:停止 Main() 方法退出并因此终止程序没有任何意义。 2:局部变量不足以防止 Timer 对象被垃圾回收。
标签: c#