有没有办法用给定的动作构建一个新的计时器,但是从一开始就告诉它它必须在一小时后自杀? (它可以单独使用它还是需要另一行来处理它?)
答案 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从不同线程调用计时器方法的情况。