[英]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.