Mik*_*iro 7 c# multithreading timer
我有一个服务,每隔10秒就会访问一个数据库并获取数据(如果有的话).问题是处理这些数据最多可能需要30秒.如果我使用间隔10秒的定时器,服务将获得两次相同的数据.
我想要实现的效果(仅用于可视化):
while(true)
{
if(Getnrofrows() > 0)
do stuff
else
sleep for 10 sec
}
Run Code Online (Sandbox Code Playgroud)
Ppl说Thread.Sleep在生产服务中是个坏主意,我该怎么做定时器呢?
/麦克风
ado*_*lot 10
您是否尝试将Timer属性自动重置设置为false,并在刷新数据的过程结束时再次启用计时器
using System;
public class PortChat
{
public static System.Timers.Timer _timer;
public static void Main()
{
_timer = new System.Timers.Timer();
_timer.AutoReset = false;
_timer.Interval = 100;
_timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
_timer.Enabled = true;
Console.ReadKey();
}
static void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//Do database refresh
_timer.Enabled = true;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6073 次 |
| 最近记录: |