2014-12-05 61 views
0

我想每5分钟运行一次函数,由于某种原因计时器不会等待,所有事情都会立即发生。 这是代码。c#计时器不会等待

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

http://msdn.microsoft.com/en-us/library/2x96zfy7(v=vs.110).aspx应回答你的问题,尤其是“备注”部分。 – 2014-12-05 05:53:56

回答

0

我看到一个无限循环。创建计时器时,它会在TimeSpan.Zero处执行callProcedure,然后每5分钟再执行一次,这是构造函数的最后一个参数。

所以,当你创建计时器时,它会自动执行该函数,它将再次创建完全相同的计时器,它立即运行callProcedure,等等。它永远不会结束。

只需交换最后2个参数,使其每5分钟只运行一次,即可重置计时器以在另一个5分钟内再次运行。

System.Threading.Timer timer = new System.Threading.Timer(
    callProcedure, null, TimeSpan.FromMinutes(5), TimeSpan.Zero);