c#计时器不等待

时间:2014-12-05 05:48:40

标签: c# timer

我试图每隔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));
    }
}

}

1 个答案:

答案 0 :(得分:0)

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

因此,当您创建计时器时,它会自动执行该功能,再次创建完全相同的计时器,立即运行callProcedure,依此类推。它永远不会结束。

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

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