C#Timer与服务中的线程
发布时间:2020-12-16 04:55:34 所属栏目:百科 来源:网络整理
导读:我有一个服务,每10秒就会访问一个数据库并获取数据(如果有的话).问题是处理这些数据最多可能需要30秒.如果我使用10秒间隔的定时器,服务将获得两次相同的数据. 我想要实现的效果(仅用于可视化): while(true){ if(Getnrofrows() 0) do stuff else sleep for 1
我有一个服务,每10秒就会访问一个数据库并获取数据(如果有的话).问题是处理这些数据最多可能需要30秒.如果我使用10秒间隔的定时器,服务将获得两次相同的数据.
我想要实现的效果(仅用于可视化): while(true) { if(Getnrofrows() > 0) do stuff else sleep for 10 sec } Ppl说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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |