2010-06-03 127 views

回答

18

這是從MSDN documentation的重要組成部分,你應該考慮

要防止事件處理程序從 當事件是 提出被調用,只需從 事件退訂。爲了防止資源泄漏,在處理用戶對象之前,從事件中取消訂閱 是很重要的。直到您 取消訂閱事件,發佈對象中位於 事件之下的 多播委託對 封裝訂閱者事件 處理程序的代理的引用具有 引用。 只要發佈 對象擁有該引用,您的 訂戶對象將不會收集垃圾 。

2

重要的是取消訂閱事件。如果你不這樣做,那麼訂閱者不能被垃圾收集,實質上就是內存泄漏。以下是你可能會遇到,如果你不退訂的問題,一個很好的例子:

http://developers.slashdot.org/article.pl?sid=07/11/17/0552247

此外,它可能會導致性能問題的事件處理程序將繼續調用,即使它不是做對你有用的東西了。

另一方面,如果您剛剛結束程序的執行,那麼沒有理由退訂事件。這當然不是強制性的,我不認爲有任何理由推薦它。