我试图每隔5分钟运行一次功能,由于某种原因,计时器根本不会等待,所有事情都会立即发生。 这是代码。
class Program
{
static void Main(string[] args)
{
setTimer();
Console.Read();
}
public static void callProcedure(object state)
{
//dosomething..
setTimer();
}
private static void setTimer()
{
System.Threading.Timer timer = new System.Threading.Timer(callProcedure, null, TimeSpan.Zero, TimeSpan.FromMinutes(5));
}
}
}
答案 0 :(得分:0)
我看到一个无限循环。创建计时器时,它会在callProcedure
处执行TimeSpan.Zero
一次,然后每5分钟执行一次,这是构造函数的最后一个参数。
因此,当您创建计时器时,它会自动执行该功能,再次创建完全相同的计时器,立即运行callProcedure
,依此类推。它永远不会结束。
只需交换最后两个参数,使其每5分钟运行一次,重置计时器再在5分钟内再次运行。
System.Threading.Timer timer = new System.Threading.Timer(
callProcedure, null, TimeSpan.FromMinutes(5), TimeSpan.Zero);