c#中的事件处理程序和应用程序生命周期对象 - 我应该解开吗?

Ste*_*lis 7 c# event-handling

假设我有一个在应用程序持续时间内存在的对象.我们称之为GlobalWorker.GlobalWorker具有其他对象可以订阅的事件,例如UserLoggedIn.现在想象一下,我有一个Silverlight页面或一个asp.net页面,它在构造时订阅了UserLoggedIn事件.

public SomePage()
{
GlobalWorker.Instance.UserLoggedIn += new EventHandler(OnUserLoggedIn);
}

private void OnLoggedIn(object sender, EventArgs e)
{

}
Run Code Online (Sandbox Code Playgroud)

是否存在此事件会阻止页面被垃圾回收?如果是这样,在这个实例中使用的最佳模式是什么:弱事件处理程序,将订阅移动到Load事件并取消订阅UnLoad事件?

Ali*_*tad 3

使用弱事件

这是 WPF 中的一个常见问题,很高兴您考虑过它。