2011-06-20 15 views
3

我努力學習問題或放在一起的點點滴滴,我一直在回升,所以我就幾個問題:C#-A夫婦涉及線程和空閒時間

  1. 我有一個線程在執行操作後休眠5個小時,現在當線程休眠時應用程序進入空閒狀態?它會自動產生,還是我必須調用thread.Yield()?

  2. 如果您有一個等待用戶輸入的wpf應用程序,它是否在等待時進入空閒狀態?讓我們假設應用程序可能需要等待整整一天才會被告知要做些什麼?它在等待時做了什麼,它會不斷消耗資源,或者簡單地自動進入等待的空閒狀態?

  3. 現在從問題2開始,如果wpf是wcf服務的自身主機,那麼wpf在啓動託管後會做什麼?它會進入閒置狀態嗎?因此,從問題2開始,按鈕將用於重置服務,wpf應用程序會做什麼(在按下按鈕之前,如果它相同,則不必重複2的答案)?

謝謝大家, P.S. 對不起,爲什麼問題看起來像真正的考試: - 他們不是。剛剛結束的考試,這就是我所看到的:-S

回答

4
  1. 如果調用Thread.Sleep(),線程不會使用,而它的睡覺任何CPU資源。 線程將進入空閒狀態,應用程序可能由多個線程組成。

  2. 操作系統一直保持「睡着」狀態,直到有消息準備好爲止。當UI應用程序正在運行時(除非在UI線程上使用定時器或其他東西),對CPU沒有任何影響,但是當然它會繼續使用內存。

  3. 該服務由另一個線程託管。該線程在消息到達之前不會使用CPU資源。您從C#中看不到此線程,但如果您在應用程序運行時打開任務管理器(Ctrl-Alt-Del),則可以看到爲您的應用程序運行的線程數量(您可能需要向其中添加列從任務管理器菜單欄)。另一個有趣的列是「CPU時間」,它告訴你應用程序對CPU的影響。

+0

甜美的男人,謝謝解釋很多謝謝:D – Heinrich