假设我有一个在应用程序持续时间内存在的对象.我们称之为GlobalWorker. GlobalWorker有例如UserLoggedIn,其他对象可以订阅.现在想象一下,我有一个Silverlight页面或一个asp.net页面,它在构造时订阅了UserLoggedIn事件.
public SomePage() { GlobalWorker.Instance.UserLoggedIn += new EventHandler(OnUserLoggedIn); } private void OnLoggedIn(object sender,EventArgs e) { }
是否存在此事件会阻止页面被垃圾回收?如果是这样,在这个实例中使用的最佳模式是什么:弱事件处理程序,将订阅移动到Load事件并取消订阅UnLoad事件?
解决方法
使用
Weak Events.
这是WPF中的常见问题,您可以考虑它.