我必须在线程中每1小时更新一些数据。我把Method-checker放到一个新的Thread
中if ((time_now - last_update) < 3600)
Thread.Sleep(3600 * 1000);
但我觉得这不是正确的。也许有一种优雅而廉价的方法可以在C#中每小时检查一次更新而没有Thread.Sleep
答案 0 :(得分:2)
如何在每个固定时间运行拉动方法:
var startTimeSpan = TimeSpan.Zero;
var periodTimeSpan = TimeSpan.FromHours(1);
var timer = new System.Threading.Timer((e) =>
{
YourPullingMethod();
}, null, startTimeSpan, periodTimeSpan);
答案 1 :(得分:1)
您可以执行以下操作。
object waitTimeOut = new object();
lock (waitTimeOut)
{
Monitor.Wait(waitTimeOut, TimeSpan.FromMilliseconds(3600 * 1000));
}
或
TimeSpan ts = TimeSpan.FromMilliseconds(3600 * 1000);
t.Wait(ts)
或者对于低频率你,其他评论对于使用cron作业是好的;并且会更适合你正在做的事情
答案 2 :(得分:-1)
查看System.Threading.Timer
课程(或其他计时器,使用最适合您的课程)。