gpt4 book ai didi

C#暂停程序执行

转载 作者:太空狗 更新时间:2023-10-29 22:36:58 27 4
gpt4 key购买 nike

我正在编写一个程序,每 10 或 15 分钟执行一次操作。我希望它一直运行,所以我需要处理能力便宜的东西。到目前为止,我所阅读的内容似乎表明我想使用计时器。这是我到目前为止的代码片段。

class Program {
private static Timer timer = new Timer();

static void Main(string[] args) {
timer.Elapsed += new ElapsedEventHandler(DoSomething);
while(true) {
timer.Interval = TimerMilliseconds(); // The duration of the wait will differ each time
timer.Enabled=true;
}
}
}

这里的问题是 while 循环一直在快速执行。在计时器结束之前如何停止执行。我的程序真的不需要多线程。计时器是否适合这项工作?

提前感谢您的帮助!

更新:很抱歉造成混淆。我已经实现了 DoSomething 方法。我只是没有包括它,因为我不认为这是我的问题的一部分。

最佳答案

Timer 将在指定的时间间隔结束后触发 Elapsed 事件。

我会做这样的事情:

private static Timer timer = new Timer();

static void Main(string[] args)
{
timer.Elapsed += new ElapsedEventHandler(DoSomething);
timer.Interval = TimerMilliseconds(); // The duration of the wait will differ each time
timer.Enabled=true;

Console.ReadKey(); //Wait for keypress to terminate
}

您也可以将其实现为一项服务,这样您就不必像 Console.ReadKey 这样的阻塞调用来防止程序终止。

最后,您可以只更改事件处理程序中的时间间隔:

static void DoSomething(...)
{
timer.Stop();
timer.Interval = TimerMilliseconds();

...
timer.Start();
}

关于C#暂停程序执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27828318/

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