有没有办法用给定的动作建立一个新的计时器,但从一开始就告诉它它必须在一小时后杀死自己?(它可以自己解决还是我需要另一条线来处理它?)
问问题
237 次
1 回答
1
我会使用两个计时器,一个做你想做的事,另一个在一小时后杀死第一个计时器。
这里有两个示例,每个示例都使用 1 秒的主计时器,需要在第五秒时终止。
如果您使用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 秒)。根据这篇文章,这是首选,但System.Threading.Timer
根据这篇文章,System.Timers.Timer
它适用于可能从不同线程调用计时器方法的情况。
于 2012-08-12T08:44:45.840 回答