我有一個程序集拖動了一個COM Interop VB 6.0文本編輯器,並將它用作一個.NET包裝的控件... 然後在一個新的程序集是一個Windows窗體,我拖放上面的程序集,開始使用它,聲明它的一個變量,並且如果Assmbley abvoe被namved MyTextControl則在該窗口形成我有mytxtcntrl爲它像Form_Closed是刪除事件處理程序的正確位置嗎?
mytxtcntrl.TextEditor.ObjectDblClicked += new AxTextEditorLib._DTextEditorEvents_ObjectDblClickedEventHandler(ctlTEEditor_ObjectDblClicked);
可變和一些事件處理程序分配事件處理它,因此例如
因此,現在Sholud我甚至擔心用「 - =」去除這些事件處理程序?或GC會照顧它? 如果我應該手動進行,那麼正確的位置是什麼?我把它們放在Form_Closed部分並運行內存分析器,它沒有任何影響。
我有一段時間沒有在.NET中處理過ActiveX控件,但是在.NET中曾經存在過一個錯誤,它在窗體被關閉和處置後不能幹淨地擺脫ActiveX控件,所以它很可能取消訂閱是一個好主意。取消訂閱關閉或覆蓋表單的Dispose(布爾)應該沒問題。 – Pete