與線小的事件處理程序例如:
myNewLog.EntryWritten += new EntryWrittenEventHandler(MyOnEntryWritten);
據推測,這增加了所述觸發事件的隊列進行處理。什麼從隊列中刪除處理程序?我甚至需要考慮這個嗎?
與線小的事件處理程序例如:
myNewLog.EntryWritten += new EntryWrittenEventHandler(MyOnEntryWritten);
據推測,這增加了所述觸發事件的隊列進行處理。什麼從隊列中刪除處理程序?我甚至需要考慮這個嗎?
因此,在所引用的例子中,我將在Signal.Set()的正上方添加 - =條目,否則與+ =版本相同。線?在我的情況下,這將是一個可以長時間運行的Windows服務的一部分,而處理程序將在一秒鐘左右完成。 – Kal 2013-04-08 05:58:41
@Kal:不,「myNewLog」位於不同的範圍,所以您無法在「MyOnEntryWritten」中訪問它。在signal.WaitOne()之後取消訂閱是有意義的(如果你想將AutoResetEvent設置爲[signaled state](http://msdn.microsoft.com/en-us/library/system.threading .autoresetevent.aspx)只有一次)。 – victorph 2013-04-08 12:29:26
因爲我想讓事件重複發生,你是說我不應該設置 - =?這種問題將問題帶回整個圈子。 – Kal 2013-04-08 15:16:43
我改變了邏輯,使行只寫一次,而不是在循環內。不再需要從隊列中移除事件。 – Kal 2013-04-08 18:14:28