仅在应用程序生命周期的第一个小时内需要计时器

时间:2012-08-12 08:31:53

标签: c# timer

有没有办法用给定的动作构建一个新的计时器,但是从一开始就告诉它它必须在一小时后自杀? (它可以单独使用它还是需要另一行来处理它?)

1 个答案:

答案 0 :(得分:1)

我会使用两个计时器,一个可以做任何你想做的事情,另一个可以在一小时后杀死第一个计时器。

以下是两个示例,每个示例使用1秒钟的主计时器,需要在第5秒被杀死。

如果您使用System.Threading.Timer

Timer actualTimer = new Timer(obj => Console.WriteLine("Timer!"),
    null, 0, 1000);

Timer killingTimer = new Timer(obj =>
{
    Console.WriteLine("Killing timer!");
    // Set the dueTime and timeout to infinite, to stop the timer.
    actualTimer.Change(Timeout.Infinite, Timeout.Infinite);
    killingTimer.Change(Timeout.Infinite, Timeout.Infinite);
}, null, 5000, 5000);

Console.ReadLine();

如果您使用System.Timers.Timer

Timer actualTimer = new Timer();
actualTimer.Interval = 1000;
actualTimer.Elapsed += (sender, e) => Console.WriteLine("Timer!");
actualTimer.Start();

Timer killingTimer = new Timer();
killingTimer.Interval = 5000;
killingTimer.Elapsed += (sender, e) =>
{
    Console.WriteLine("Killing timer!");
    actualTimer.Stop();
    killingTimer.Stop();
};
killingTimer.Start();

所有时间都以毫秒为单位(1000秒)。根据{{​​3}},System.Threading.Timer是首选,但System.Timers.Timer适用于根据this post从不同线程调用计时器方法的情况。