2012-05-18 90 views
-2

我寫通過我的方式運行的程序可能等待50次第二個或更多(必要)替代的方法while循環

的方法需要遵循這個模式:

  • 創建布爾值。
  • 等到數值改變。
  • 在該方法中繼續。

簡單的,我知道,但我不希望使用while循環,因爲它佔用了3%左右的CPU比它應該,和我想象,我需要它再等下去了值改變,這可能佔用我所有的CPU週期,我不想要。另外,每次我以每秒50次的速度執行方法時創建一個新線程是一個可怕的想法。

那麼我該怎麼辦?如果我需要提供任何其他類型的信息,請隨時提問。

+0

布爾值將如何變化?你是否在控制代碼的變化? – Ryan

+0

請勿使用布爾值。研究一下如何使用['Ev​​entWaitHandle'](http://msdn.microsoft.com/en-us/library/system.threading.eventwaithandle.aspx)來代替(或者有人會發布你的例子)。 – Douglas

+0

該值通過ref傳遞給另一個方法,當它完成時它返回true @minitech和道格拉斯,我會研究它。 – cloud

回答

0

難道ManualResetEvent有什麼用?不知道它如何與你的系統一起工作,但它可能是需要研究的東西。

0

根據方法的性質,您可以將該方法的其餘部分放入事件處理函數中,並更改其值的位置,然後首先使用ValueChanged類型事件。