热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#学习教程:C#–试图找到剩余的EventHandler,防止控件超出范围分享

C#–试图找到剩余的EventHandler,防止控件超出范围长话短说,我inheritance了一个相当复杂的应用程序,我试图追踪涉及表单的内存泄漏。现在,每次关闭表

C# – 试图找到剩余的EventHandler,防止控件超出范围

长话短说,我inheritance了一个相当复杂的应用程序,我试图追踪涉及表单的内存泄漏。 现在,每次关闭表格并提出新表格时,旧表格仍留在记忆中。 我跟踪了一个由程序中的控件拥有和设置的静态事件的问题(显然,只要静态事件被设置,该控件的任何实例都不被认为超出了范围,即使没有其他人提到所述控件)。 现在,我正在努力追查剩下的问题。

使用MemProfiler和ANTS Memory Profile,我了解到根执行路径如下:

FormOpenWatch <-- The item which remains active System.EventHandler -- (this as Delegate)._target System.Object[] System.EventHandler -- (this as MultiCastDelegate)._invocationList System.ComponentModel.EventHandlerList+ListEntry -- handler System.ComponentModel.EventHandlerList+ListEntry -- next System.ComponentModel.EventHandlerList+ListEntry -- next System.ComponentModel.EventHandlerList+ListEntry -- next System.ComponentModel.EventHandlerList+ListEntry -- next System.ComponentModel.EventHandlerList -- head PTU.MdiPTU -- (this as Component).events <-- The base application 

任何人都对我可能想要的东西有任何见解? 我发现在基本应用程序中添加了一个Shown事件,并确保在处理表单时将其删除,但这似乎没有解决问题。

非常感谢您提供的任何帮助。

后来编辑:我以为我已经好几次成功地解决了这个问题,而且我还有问题。 问题似乎源于我的Plotter类(和各种派生类)具有这个“公共静态事件MouseEventHandler MultiCursorMouseMove;” 事件。 我们有一个“光标”,显示图形在鼠标位置的值和时间。 最初,这一次在一个图表上工作,但是请求允许用户切换一种模式,其中移动鼠标将图表移动到所有显示的图形上。 当项目被实例化时,我写了一个初始处理程序挂钩EventHandlers,并且我在池塘的伙伴重新编写它以使用静态事件,该事件被分配给构造中的每个项目。 他的方式更优雅,效果更好。 除了导致内存泄漏之外的所有内容。 使用内存分析软件已经表明,每次我试图摆脱持有图的表格时,我都会留下一些“带有直接EventHandler根的Disposed实例”。 在每一个中,它表明对象是绘图仪或绘图仪指向的对象。 并且,在每个中,基本链接是MultiCursorMouseMove EventList指向这些对象。 我认为正在发生的事情是绘图仪是活着的,因为它有这个静态事件,而这个事件又与绘图仪有关。 我已经设法通过我的Dispose代码删除每个Plotter的事件来validationMultiCursorMouseMove在给定点通过调试器是空的,但是在同一点运行探查器仍然显示从MultiCursorMouseMove到这些类的链。

我目前没有关于如何解决这个问题的想法。 任何人?

如果MdiPTU是您的应用程序的MDI父表单,则听起来FormOpenWatch可能已订阅其中一个事件。 如果没有直接这样做,您可能会在FormOpenWatch超类中找到订阅,或者甚至可能在其他代码中找到可以从MdiPTU事件中连接FormOpenWatch方法的执行。

上述就是C#学习教程:C# &#8211; 试图找到剩余的EventHandler,防止控件超出范围分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注&#8212;编程笔记


推荐阅读
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Python如何调用类里面的方法
    本文介绍了在Python中调用同一个类中的方法需要加上self参数,并且规范写法要求每个函数的第一个参数都为self。同时还介绍了如何调用另一个类中的方法。详细内容请阅读剩余部分。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
author-avatar
吴静爽
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有