2009-02-23 43 views
1

我正在实施UserControl,它实现了IMessageFilter。它在其构造函数中调用Application.AddMessageFilter。我想从它的Dispose(bool disposing)方法中的消息过滤器中删除它,但我不知道是否将呼叫置于Application.RemoveMessageFilter的内部(因此在disposing为true时调用它),还是我应该将它称为测试(所以无论何时调用方法都会调用它)。何时应该从消息过滤器中删除UserControl?

哪种方法是正确的?

回答

1

您只能在处理时调用其他托管对象,而不能在最终确定时调用其他托管对象,因为不能保证其他被引用的对象尚未完成。这意味着只有当disposing为真时,才应该调用RemoveMessageFilter。