5

我已经浏览了有关此计时器类更改功能的 msdn 库,

http://msdn.microsoft.com/en-us/library/yz1c7148.aspx

public bool Change( int dueTime, int period )

但我不明白周期参数是什么。

我也尝试创建一个示例来查看它的用途,但似乎它什么也没做

Timer JobTime = new Timer(timer =>
        {
            try
            {
                WriteLog(DateTime.Now.ToString(), "TestJobTimer"); //Save invoke time to file

                ((Timer)timer).Change(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(20));
            }
            catch(Exception ex)
            {
                string stop = ex.Message;
            }
        });
        JobTime.Change(0, 0);

基于这个示例,我得到的是计时器将每 5 秒重复一次,那么 PERIOD 参数是什么?

谢谢

4

2 回答 2

6

dueTime显示何时触发第一个事件,

在那之后多久

在您的情况下,第一个事件将在 5 秒后触发,然后每 20 秒触发一次

编辑

至于你用 0,0 调用你的计时器更改,它会不耐烦地开始并且在计时器滴答时调用你将它更改为每 20 秒 5 秒后触发,这就是事件每 5 秒触发一次的原因

如果您想在 5 秒后每 20 秒触发一次事件,请从处理程序中删除计时器更改,并像这样只启动一次计时器

    Timer JobTime = new Timer(timer =>
    {
        try
        {
            Console.WriteLine(DateTime.Now.ToString(), "TestJobTimer"); //Save invoke time to file
        }
        catch (Exception ex)
        {
            string stop = ex.Message;
        }
    });
    JobTime.Change(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(20));

希望这可以帮助

于 2012-05-07T11:38:25.347 回答
0

DueTime = 距离首次部署的时间

周期 = 下一次部署的到期时间之后的时间量,以及每次后续部署的时间量。

于 2012-05-07T11:37:54.283 回答