2009-02-23 46 views
1

我正在實施UserControl,它實現了IMessageFilter。它在其構造函數中調用Application.AddMessageFilter。我想從它的Dispose(bool disposing)方法中的消息過濾器中刪除它,但我不知道是否將呼叫置於Application.RemoveMessageFilter的內部(因此在disposing爲true時調用它),還是我應該將它稱爲測試(所以無論何時調用方法都會調用它)。何時應該從消息過濾器中刪除UserControl?

哪種方法是正確的?

回答

1

您只能在處理時調用其他託管對象,而不能在最終確定時調用其他託管對象,因爲不能保證其他被引用的對象尚未完成。這意味着只有當disposing爲真時,才應該調用RemoveMessageFilter。