gpt4 book ai didi

c# - C#System.Timers.Timer自动关闭?

转载 作者:行者123 更新时间:2023-12-03 13:16:11 27 4
gpt4 key购买 nike

我有一个启动的Timer,它在它自己的线程中无限期地工作,直到主线程中发生某些事情来禁用它,在这种情况下将启用另一个定时器。这完美地工作。唯一的问题是我要完全确保第二个计时器不会运行太长时间。

如果由于某些故障而未收到特定的关闭命令,有没有办法使计时器在10分钟后自动禁用?

我看到该类具有InitializeLifetimeService方法。听起来可能有帮助,但我不知道如何工作。

谢谢大家和加尔斯:)

最佳答案

在给定时间后启动第二个计时器以将其禁用时,您可以考虑启动第三个计时器。

        Timer t1 = new Timer(1000); // fire every second
Timer t2 = new Timer(60000); // fire after 10 minutes
t2.Elapsed += (o, e) => t1.Stop(); // disable timer 1 when timer 2 is elapsed

t1.Start();
t2.Start();

上面的示例顺便使用了System.Timers.Timer 的 。如果您使用的是 System.Threading.Timer ,那么您也可以考虑在那里进行开关,以便获得足够多的 System.Timers.Timer.Timer 本质上是线程安全的,而 System.Threading.Timer 不是。

很好的概述可以在这里找到:
http://msdn.microsoft.com/en-us/magazine/cc164015.aspx

,为清楚起见,请进行编辑:
线
t2.Elapsed += (e, o) => t1.Stop();

也可以写成
 t2.Elapsed += new ElapsedEventHandler(t2_Elapsed);

其次是
void t2_Elapsed(object sender, ElapsedEventArgs e)
{
t1.Stop();
}

这是在Visual Studio中按Ctrl + Space时实际得到的结果,因为您可以使用下面的方法访问t1。

关于c# - C#System.Timers.Timer自动关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9938594/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com