C# 静态公共事件
我有一个公共静态类,它有一些我在整个项目中使用的公共内容。为注销和登录事件添加一个公共静态事件,并将所有相关的类和表单注册到此事件中,以最小化代码,这是否是一个好主意,因为目前我在注销和登录方法中有很多代码,用于在登录或注销时处理表单和不同的类,相反,我只是在login和logout方法中触发事件,并将代码放入为事件注册的每个类的事件处理程序方法中。这是一种好的做法还是不好的做法?这是不好的,因为您的侦听器对象(绑定到那些静态事件的对象)永远不会被垃圾收集,您应该完全避免静态事件。这就是弱事件模式诞生的原因。虽然我并不是说你需要使用这种模式(因为我对你的应用程序的内部结构知之甚少),但阅读这种模式将有助于你更仔细地设计你的应用程序C# 静态公共事件,c#,winforms,events,C#,Winforms,Events,我有一个公共静态类,它有一些我在整个项目中使用的公共内容。为注销和登录事件添加一个公共静态事件,并将所有相关的类和表单注册到此事件中,以最小化代码,这是否是一个好主意,因为目前我在注销和登录方法中有很多代码,用于在登录或注销时处理表单和不同的类,相反,我只是在login和logout方法中触发事件,并将代码放入为事件注册的每个类的事件处理程序方法中。这是一种好的做法还是不好的做法?这是不好的,因为您的侦听器对象(绑定到那些静态事件的对象)永远不会被垃圾收集,您应该完全避免静态事件。这就是弱事件模
在这件事上有一个古老而有用的观点。我并不是说你应该使用这种模式;我是说,研究这种模式会告诉您为什么静态事件不是一个好主意。对于这种类型的场景,您还可以使用设计模式订阅和通知“全局”事件 在实现此设计模式时,可以使用“WeakReference”来避免内存泄漏(引用未被垃圾收集) 例如:
Mediator.Subscribe("Login", callbackForLogin);
Mediator.Notify("Login", parameters);