gpt4 book ai didi

c# - 防止服务的多个实例 - 最佳方法?

转载 作者:IT王子 更新时间:2023-10-29 04:40:07 25 4
gpt4 key购买 nike

那么您认为防止 C# Windows 服务的多个线程同时运行的最佳方法是什么(该服务使用 timerOnElapsed 事件)?

使用 lock()mutex ?

我似乎无法理解 mutex 的概念,但使用 lock() 似乎很适合我的情况。

无论如何,我是否应该花时间学习如何使用 mutex

最佳答案

使您的计时器成为一次性计时器,并在 elapsed 事件处理程序中重新初始化它。例如,如果您正在使用 System.Timers.Timer,您可以像这样初始化它:

myTimer.Elapsed = timer1Elapsed;
myTimer.Interval = 1000; // every second
myTimer.AutoReset = false; // makes it fire only once
myTimer.Enabled = true;

还有你的 elapsed 事件处理程序:

void timerElapsed(object source, ElapsedEventArgs e)
{
// do whatever needs to be done
myTimer.Start(); // re-enables the timer
}

这样做的缺点是计时器不会以一秒为间隔触发。相反,它会在最后一个报价单的处理完成后一秒钟触发。

关于c# - 防止服务的多个实例 - 最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10441368/

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