我有對象訂閱自定義事件,所以我可以一次性更改它們。麻煩的是,那永遠不會讓他們超出範圍並被垃圾收集。即使爲null控件也不會使其中包含的控件爲空。事實上,即使是無效的控件也不會收集! (請糾正我,如果我在任何一點錯誤。)如何擁有對象/控件儘管訂閱了事件GC'd
所以我想到了一個解決方案,將包裝事件在一個類中,創建該類的實例並使用它,然後將其清空當我想讓對象得到GC'd,並創建一個新的實例來繼續。
不過,我對此兩個問題:
- 它確實能工作,或將對象仍然逃避是GC'd?
- 有沒有更簡單,更直接的方法來實現呢?
編輯:第2部分已回答(在評論中回答)。簡單地做:event_name = null;
。不過,我仍然想知道第1部分 - 它會起作用嗎?
的[弱事件模式](http://msdn.microsoft.com/en-us /library/aa970850.aspx)對於這類問題非常有用。 – vcsjones
@vcsjones看起來不錯。但它似乎是爲WPF。我正在使用winforms。 – ispiro