我的基类中有一些事件要在IDisposable或Finalizer中应用以下模式。
var onCategorizedMessage = this.OnCategorizedMessage.GetInvocationList().ToList();
foreach (var item in onCategorizedMessage)
this.OnCategorizedMessage -= item;
我会在每个事件中重复一次此代码。
这是处理取消订阅事件以防止内存泄漏的合理且可靠的方法吗?
答案 0 :(得分:0)
没有必要使用for
或foreach
来执行此操作,因为您可以访问支持字段(存储代理),您只需要这样做:
this.OnCategorizedMessage = null;
有关详细信息,请查看此处: http://www.codeproject.com/Articles/864690/Simplifying-Events-in-NET