c#定时器不';等不及了

c#定时器不';等不及了,c#,timer,C#,Timer,我试着每5分钟运行一次函数,由于某种原因,计时器根本不等待,一切都会立即发生。 这是代码 class Program { static void Main(string[] args) { setTimer(); Console.Read(); } public static void callProcedure(object state) { //dosomething.. setTim

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

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

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

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

System.Threading.Timer timer = new System.Threading.Timer(
    callProcedure, null, TimeSpan.FromMinutes(5), TimeSpan.Zero);
应该回答你的问题,特别是“备注”部分。