加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:27:49 所属栏目:百科 来源:网络整理
导读:我有一个问题,我正在处理的应用程序有内存泄漏.经验告诉我,垃圾回收语言的第一个地方遇到内存泄漏之一是处理订阅事件,以后未能取消订阅.第二个与存储静态有关.我是C#的新手,对不透明事件类型感到沮丧. 我们通过抽奖获得了一些双重订阅错误,但是应用程序真的
我有一个问题,我正在处理的应用程序有内存泄漏.经验告诉我,垃圾回收语言的第一个地方遇到内存泄漏之一是处理订阅事件,以后未能取消订阅.第二个与存储静态有关.我是C#的新手,对不透明事件类型感到沮丧.

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

编辑:

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

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

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读