你如何找出C#中订阅的事件?

前端之家收集整理的这篇文章主要介绍了你如何找出C#中订阅的事件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个问题,我正在处理的应用程序有内存泄漏.经验告诉我,垃圾回收语言的第一个地方遇到内存泄漏之一是处理订阅事件,以后未能取消订阅.第二个与存储静态有关.我是C#的新手,对不透明事件类型感到沮丧.

我们通过抽奖获得了一些双重订阅错误,但是应用程序真的使用了一些事件.虽然我们非常了解取消订阅订阅的所有内容的原则,但仍然存在内存泄漏.我想系统地确定什么是订阅什么.

编辑:

感谢您指向GetInvocationList()方法的指针.我正在尝试创建一个调试工具,将动态转储结果.问题是我找到的解决方案在.Net2中工作,但不再在.Net 3.5中.本质上,告诉您为EventInfo(反射,GetField和GetEvents分别)获取相应的FieldInfo.但是,在.NET 3.5中没有相应的FieldInfo,而EventInfo不会让我获得调用列表.

我只想转储事件列表和它们的InvocationList进行调试.

解决方法

尝试在名为GetInvocationList的事件上使用方法.

这将返回一个正在订阅事件的代理数组.

数组将按照添加的顺序包含代理.这也可以用于从列表中单独输出调用特定的代理,而调用event.Invoke方法将会调用它们(但仅给出最后一个委托的返回值)

原文链接:https://www.f2er.com/csharp/95512.html

猜你在找的C#相关文章