繁体   English   中英

我应该Thread.Sleep呆一个小时还是有更聪明的方法?

[英]Should I Thread.Sleep for a hours or there are more smarter way?

我必须在线程中每1小时更新一些数据。 我将方法检查器放入新的线程中

if ((time_now - last_update) < 3600)
            Thread.Sleep(3600 * 1000);

但是我觉得这是不正确的。 如果没有C#中的Thread.Sleep ,也许每小时都有一种优雅且便宜的方法来检查更新?

如何每隔固定的时间运行一次拉动方法:

var startTimeSpan = TimeSpan.Zero;
var periodTimeSpan = TimeSpan.FromHours(1);

var timer = new System.Threading.Timer((e) =>
{
    YourPullingMethod();
}, null, startTimeSpan, periodTimeSpan);

睡眠不宜使用。 它不可靠,无法取消; 它也阻塞了

您可以执行以下操作。

object waitTimeOut = new object();

lock (waitTimeOut) 
{ 
      Monitor.Wait(waitTimeOut, TimeSpan.FromMilliseconds(3600 * 1000)); 
} 

要么

 TimeSpan ts = TimeSpan.FromMilliseconds(3600 * 1000);
 t.Wait(ts)

或者,如果您的频率较低,则其他评论对使用cron作业很有帮助; 会更适合您的工作

查看System.Threading.Timer类(或其他计时器,使用最适合您的计时器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM