我正在运行Windows服务并使用循环和Thread.Sleep来重复任务,使用计时器方法会更好吗?
如果是,代码示例会很棒
我目前正在使用此代码重复
int curMinute;
int lastMinute = DateTime.Now.AddMinutes(-1).Minute;
while (condition)
{
curMinute = DateTime.Now.Minute;
if (lastMinute < curMinute) {
// do your once-per-minute code here
lastMinute = curMinute;
}
Thread.Sleep(50000); // sleeps for 50 seconds
if (error condition that would break you out of this) {
break; // leaves looping structure
}
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 43
计时器是一个更好的主意,IMO.这样,如果要求您的服务停止,它可以非常快速地响应,并且不会再次调用计时器滴答处理程序...如果您正在睡觉,服务管理器将要么等待50秒或者杀死您的线程,两者都不是非常好.
Pra*_*nth 32
class Program
{
static void Main(string[] args)
{
Timer timer = new Timer(new TimerCallback(TimeCallBack),null,1000,50000);
Console.Read();
timer.Dispose();
}
public static void TimeCallBack(object o)
{
curMinute = DateTime.Now.Minute;
if (lastMinute < curMinute) {
// do your once-per-minute code here
lastMinute = curMinute;
}
}
Run Code Online (Sandbox Code Playgroud)
代码可能类似于上面的代码
Chr*_*per 11
重要的是要理解你的代码将在结束一个循环和开始下一个循环之间休眠50秒......
计时器将每隔50秒调用一次循环,这不完全相同.
它们都是有效的,但计时器可能就是你在这里寻找的.
| 归档时间: |
|
| 查看次数: |
98656 次 |
| 最近记录: |