gpt4 book ai didi

C# 计时器与服务中的线程

转载 作者:太空狗 更新时间:2023-10-29 20:08:50 24 4
gpt4 key购买 nike

我有一项服务每 10 秒访问一次数据库并获取数据(如果有的话)。问题是处理这些数据最多可能需要 30 秒。如果我使用间隔为 10 秒的计时器,该服务将两次获取相同的数据。

我想要达到的效果(只是为了可视化):

while(true)
{
if(Getnrofrows() > 0)
do stuff
else
sleep for 10 sec
}

人们说 Thread.Sleep 在生产服务中是个坏主意,我该如何使用计时器来做到这一点?

/迈克

最佳答案

您是否尝试将 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;
}
}

关于C# 计时器与服务中的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3474694/

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