(我正在使用带有 Silverlight 的 DF 7.2.3)
在事件上使用ideablade devforce的MakeWeak扩展来处理它们作为弱引用,我认为它可以防止内存泄漏。但是我注意到所有使用 MakeWeak 的对象都没有被释放。
在对 Viewmodel 的简单测试中,如果我使用 MakeWeak 注册事件,则 GC 永远不会释放 viewmodel。如果我用标准的 += eventmethod 和 -= eventmethode 替换代码,GC 会释放视图模型。
这是我使用 MakeWeak 的方法:
entityManagerProvider.ManagerCreated +=
new EventHandler<EntityManagerCreatedEventArgs>(EntityManagerCreated)
.MakeWeak(eh => entityManagerProvider.ManagerCreated -= eh);
使用EntityManagerCreated方法作为internal。
这是一个错误还是我以错误的方式使用它?