gpt4 book ai didi

c# - 如何处理重复执行?

转载 作者:行者123 更新时间:2023-11-30 14:04:06 25 4
gpt4 key购买 nike

我正在尝试验证我为我认为是一个相当典型的问题提出的解决方案。我有一个服务正在运行,每 10 分钟它应该做一些事情。我得到了以下结果:

private AutoResetEvent autoResetEvent = new AutoResetEvent(true);
private bool isRunning = true;

public void Execute()
{
while(isRunning)
{
DoSomething();

if(isRunning)
{
autoResetEvent.WaitOne(new Timespan(0, 10, 0));
}
}
}

public void Stop()
{
isRunning = false;
autoResetEvent.Set();
}

我能看到的直接潜在问题是我没有对 Stop() 中的 isRunning 修改进行任何类型的锁定,它被另一个线程调用,但我不确定我是否真的需要这样做?我认为可能发生的最坏情况是它运行一个额外的周期。

除此之外,这段代码还有什么明显的问题吗?有没有更好的方法来解决我不知道的这个问题?

最佳答案

您可以尝试使用 System.Threading.Timer:

Timer tmr = new Timer(DoSomething, null, new TimeSpan(0, 0, 0), new TimeSpan(0, 10, 0))

关于c# - 如何处理重复执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2835734/

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