我已经浏览了有关此计时器类更改功能的 msdn 库,
http://msdn.microsoft.com/en-us/library/yz1c7148.aspx
public bool Change( int DueTime, int period )
但我不明白 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);
Run Code Online (Sandbox Code Playgroud)
基于此示例,我得到的是计时器将每 5 秒重复一次,因此 PERIOD 参数是什么?
谢谢
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));
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
3871 次 |
| 最近记录: |