使用 GetInvocationList 取消订阅事件处理程序
本文关键字:事件处理 程序 GetInvocationList 取消 使用 | 更新日期: 2023-09-27 18:36:54
我的基类中有一些事件,我想将以下模式应用于 IDisposable 或终结器中。
var onCategorizedMessage = this.OnCategorizedMessage.GetInvocationList().ToList();
foreach (var item in onCategorizedMessage)
this.OnCategorizedMessage -= item;
我会为每个事件重复一次此代码。
这是处理取消订阅事件以防止内存泄漏的合理且可靠的方法吗?
无需使用 for
或 foreach
来执行此操作,因为您可以访问支持字段(存储委托),您只需要这样做:
this.OnCategorizedMessage = null;
有关更多信息,您可以在此处查看:http://www.codeproject.com/Articles/864690/Simplifying-Events-in-NET