2014-01-31 50 views
1

在我ASP.NET網頁(C#)我想執行一個功能,每半小時一班,所以我用下面的代碼線程睡眠功能未響應

while (true) 
{ 
    Thread.Sleep(1800000); 
    checkstatus(); 
}   

我想知道這個線程是否處於睡眠狀態的一半一個小時或沒有。或者是否有任何到期時間Thread.Sleep()

如果我給60000而不是1800000的代碼是爲我工作。任何人都可以告訴我爲什麼它沒有響應Thread.Sleep(1800000);意味着它沒有執行checkstatus()

+1

一個計時器將是一個更好的做法! – Liath

+0

在網頁表單中?我只想要一個進程需要執行。那我該如何使用計時器?當我必須開始? – Raghuveera

+0

爲什麼你需要你的線程睡這麼久。如果每隔30分鐘運行一個進程,那麼windows服務可能是更適合處理這個問題的方法。 –

回答

4

IIS可能會關閉您的工作進程...默認值設置爲20分鐘。

Advance Settings of App Pool in IIS 7

+0

是否在域中也是一樣的? – Raghuveera

+0

我在問你,我已經上傳到服務器。無論是在服務器還是這個時間是一樣的? – Raghuveera

+0

對不起,我不確定你在說什麼....圖片aboive是從我的服務器來展示的例子。在您的Web服務器上,檢查應用程序池設置並查找諸如「空閒超時」之類的內容......它可能設置爲20分鐘。但是,正如您的問題中的評論所註釋的,在Web應用程序中阻止30米可能不是最佳方法。 –

0

緩存對象設置爲每30分鐘過期。檢查這個緩存對象是否存在,如果不存在,30分鐘過期,所以你的邏輯,並在最後設置緩存對象。對不起,措辭。

+0

但是,如果工作進程在20米後回收,那麼緩存將會丟失,所以這也不起作用。 –

+0

是的,抱歉,我在寫完之後看到了您的答案。這是真的。我想知道這是否是問題的原因。謝謝。 – Hassan