代码改变世界

弱事件 WeakEvent

2010-12-07 16:29  Clingingboy  阅读(700)  评论(0编辑  收藏  举报

 

虽然文章很少,但还是有的.引用一下

http://www.codeproject.com/KB/cs/WeakEvents.aspx

http://www.cnblogs.com/rickiedu/archive/2007/03/15/676021.aspx

http://www.cnblogs.com/Curry/archive/2008/10/30/1322647.html

事件一般都是内存泄露的源泉

建议参考此篇http://www.cnblogs.com/rickiedu/archive/2007/03/15/676021.aspx

情况如下若Window1=>Open Window2,Window2中注册了一个事件在WindowBehavior类,

若关闭Window2然后GC一下就没什么事情了.

如果只有Window2,在程序未关闭之前,那么注册在WindowBehavior中的事件就无法销毁掉,就造成了内存泄露.如果使用了弱引用事件当调用GC的时候,内部会去调用WeakEventManager的方法以释放事件(这个就是.net内部的事情了).

我们所需要做的就是实现WeakEventManager和IWeakEventListener