C#中的overlooping

Jak*_* H. 2 c# sleep loops

我将在C#中创建一个系统服务.

在onstart部分,我想每30秒循环一次,并查询一个mysql数据库.如果numrows大于0,我将使用faxcom库处理一些传真.

我的问题是:每30秒循环一次会耗尽程序/计算机吗?什么是用于循环和睡眠的最佳功能/方法?你有循环和睡眠的示例代码吗?

Ale*_*kin 7

使用Thread.Sleep()将是一个糟糕的解决方案,因为即使在睡眠时你的线程是活跃的.改用Timerclass来处理它的Elapsed事件.

本文探讨了解决服务定期执行的不同方法.

以下是您的OnStart方法的外观:

using System.Timers; 

private timer = new Timer();

protected override void OnStart(string[] args)
{
 timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
 timer.Interval = 30000; // every 30 seconds
 timer.Enabled = true;
}

Private void OnElapsedTime(object source, ElapsedEventArgs e)
{
   // Execute your code here
}
Run Code Online (Sandbox Code Playgroud)


Ode*_*ded 5

我不会使用循环结构来做这样的事情.

我会使用BCL中的一个计时器控件并将其设置为每30秒触发一次.

至于这是否"太多"的问题,答案完全取决于正在完成的工作量和它产生的负荷.