假設我有一個有2個訂閱者的事件(一切發生在同一個線程中) - 一個訂閱者寫入日誌文件,另一個訂閱者顯示一個MessageBox。如何防止訂閱者發生衝突的事件?
如果MessageBox是訂閱列表中的第一個,那麼直到用戶關閉消息框後纔會寫入日誌條目。因此,日誌條目中的時間確實是消息框關閉的時間,而不是事件發生的時間。
看來最好的解決方案是讓日誌編寫器在顯示消息框的代碼之前訂閱事件。然而,在這裏類似的問題:Are event subscribers called in order of subscription?
最好的答案是永遠不依賴於訂戶的順序。那麼,如何避免衝突而不必擔心他們的訂單呢?
對不起 - 我指的是S. Lowe的回答 – 2009-12-10 22:53:39
@ R.B。 - 好的,但同樣的邏輯適用。你是否在控制事件代碼,所以可以保證它不會攪亂事物? – 2009-12-10 23:12:03
我有控制事件代碼,但不是訂閱者。 – 2009-12-10 23:21:50