鑑於所述類都訂閱控件的事件和持有對控件的引用。如果我將控件傳遞給另一個類以進行事件處理,是否會發生內存泄漏?
背景:我在幾個窗體/用戶控件上定製了滾動面板,我決定將滾動代碼提取到名爲「ScrollLogic」的類中,以便它可以重複使用。在類的構造函數是如下:
Sub New (bntUp as Button, bntDown as Button, panelToScroll as Panel, _
scrollLength As Integer)
Me.bntUp = bntUp 'Declaration: Private bntUp As Button
AddHandler Me.bntUp.Click, AddressOf UpClicked
'Setup code for other controls/variables here
End Sub
當點擊一個按鈕,就ScrollLogic通過AutoScrollPosition屬性滾動panelToScroll。如果達到滾動限制,相應的按鈕被設置爲不可見。 (或可見,如果以相反的方向滾動滾動後變爲可能)
它工作正常,但我注意到,
ScorllLogic訂閱點擊順序按一下按鈕的事件工作
ScrollLogic持有按鈕的引用來控制其可見性。有權訪問事件的發件人是不夠的,因爲bntUp必須設置爲可見當bntDown被點擊時。
這是否會導致內存泄漏?我試圖避免重寫處理ScrollLogic對象的每個受影響的表單/用戶控件的dispose(),因爲這很醜陋。任何建議將不勝感激,謝謝