簡體   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