我尝试在下面的代码中找出问题。 timer仅为第一个实例调用方法,但在2500毫秒时间间隔后不调用它。有什么东西我错过了.Below是我的代码
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) 我也尝试用时间跨度替换时间值,但它对我来说也没有用
答案 0 :(得分:0)
您的程序在第二次间隔点火之前存在。等待以下某个方式查看下一个时间间隔的回调。控制台示例最常见的方式是ReadLine
(更多选项 - How to stop C# console applications from closing automatically?):
Console.WriteLine("Creating timer.\n");
var stateTimer = new Timer(state => p.CheckStatus(state), null, 0, 2500);
Console.ReadLine();
如果使用Timer
偶数Thread.Sleep(10000);
,则会在单独的线程上运行计时器回调。
注意:计时器停止触发的另一个标准原因是计时器被垃圾收集,但样本中并非如此。有关详细信息,请参阅System.Threading.Timer not firing after some time。