C#利用System.Threading.Thread.Sleep即時輸出資訊的詳解

來源:互聯網
上載者:User

有個網站需要產生靜態頁。
據以往經驗,凡比較爛的空間,短時間內運行耗能大的運算,都會出現“service unavailable”,以致網頁無法正常開啟。
產生靜態頁,需要在短時間內讀取大量的資料並儲存為html頁,好一些的空間運行起來沒問題,就怕那些垃圾空間……
產生的時候,需要即時輸出語音總機客戶。

根據經驗思考後,有兩種方法可行:
1、每次只執行產生一個html頁,然後輸出資訊給客戶看,如“已產生首頁,正在產生新聞頁,請稍候..”,然後在輸出的代碼裡放置上js代碼,js代碼可以隔2秒後再次重新整理產生頁,從而執行下一個html頁的產生……直至完畢。

這個演算法比較複雜,因為要產生的頁面並不是統一類型的,比如有的是首頁,有的是新聞頁,有的是留言頁……以及,要一次一次的記錄產生到哪一步,所牽涉到的問題不少。
2、使用System.Threading.Thread.Sleep如果在掛起,間斷性的產生html頁,不造成短時間內耗能太大。但如果線程掛起的時候,仍然在消耗資源,則本方法不可用。

經過測試,System.Threading.Thread.Sleep掛起的時候,並不耗cpu和記憶體。可使用方法2產生html代碼。並且不需要其它 任何設定,for迴圈1000次,System.Threading.Thread.Sleep設定為2秒,不會逾時,也就是迴圈1000次,每次迴圈之 間暫停2秒鐘,執行完需要:2*1000秒,不會逾時。
簡要程式碼:
複製代碼 代碼如下://先通知客戶,正在產生
Response.Write("正在組建檔案,請稍候...");
Response.Flush();
//通過for迴圈產生各html頁,此處僅為樣本
for (int i = 0; i <= 1000; i++)
{
//產生html代碼略
//通知
Response.Write("XXX頁產生成功,請等待下一頁面產生...");
Response.Flush();

//掛起2秒,2秒後進行下一個迴圈,以產生下一頁
System.Threading.Thread.Sleep(2 * 1000);
}
Response.Write("所有頁面產生完畢");

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.