我正在开发C#
windows service
,以指定的时间间隔(15分钟)顺序轮询多个数据库。我没有使用多线程,因为它是每个数据库的一个非常繁重的报告生成过程,并且在同一服务器上有其他OLTP应用程序使用相同的数据库,如果我们启动多个线程同时处理多个数据库,它将导致服务器关闭。
我需要知道应该使用哪个计时器System.Timer
或System.Threading.Timer
。此外,当间隔设置为15分钟且数据库处理尚未完成且超过15分钟时,则间隔15分钟不应执行,直到所有处理完成。
任何人都可以帮忙。
答案 0 :(得分:1)
使用System.Timers.Timer
并且在您处理定时器滴答的事件中,在处理过程中禁用定时器。完成工作后重新启用它。这样可以防止在处理过程中再次调用业务逻辑。
private void TimerEvent(object sender, System.Timers.ElapsedEventArgs e)
{
_serviceTimer.Enabled = false;
DoWork();
_serviceTimer.Enabled = true;
}