循环中释放容器时调用Dispose()方法会销毁对象,导致容器的个数变化。

正确示例
//方法一
for (int i = this.flowLayoutPanel1.Controls.Count-1; i >=0; i--)
{
this.flowLayoutPanel1.Controls[i].Click -= btnClick;
this.flowLayoutPanel1.Controls[i].Dispose();
}

//方法二
int ctlNum = this.flowLayoutPanel1.Controls.Count;
            for (int i = 0; i < ctlNum; i++)
            {
                this.flowLayoutPanel1.Controls[0].Click -= btnClick;
                this.flowLayoutPanel1.Controls[0].Dispose();
            }

错误示例  
两种方式都因在循环中修改了循环条件,导致内存泄漏
        foreach (var ctl in this.flowLayoutPanel1.Controls)
            {
                (ctl as Control).Click -= btnClick;
                (ctl as Control).Dispose();
            }
 
            for (int i = 0; i < this.flowLayoutPanel1.Controls.Count; i++)
            {
                this.flowLayoutPanel1.Controls[i].Click -= btnClick;
                this.flowLayoutPanel1.Controls[i].Dispose();
            }
 

winform 容器内存泄漏的更多相关文章

  1. .net中事件引起的内存泄漏分析

    系列主题:基于消息的软件架构模型演变 在Winform和Asp.net时代,事件被大量的应用在UI和后台交互的代码中.看下面的代码: private void BindEvent() { var bt ...

  2. 检查c# 内存泄漏

    c# 内存泄漏检查心得 系统环境 windows 7 x64 检查工具:ANTS Memory Profiler 7 或者 .NET Memory Profiler 4.0 开发的软件为winform ...

  3. c# 内存泄漏检查心得

    系统环境 windows 7 x64 检查工具:ANTS Memory Profiler 7 或者 .NET Memory Profiler 4.0 开发的软件为winform / windows s ...

  4. Webservice WCF WebApi 前端数据可视化 前端数据可视化 C# asp.net PhoneGap html5 C# Where 网站分布式开发简介 EntityFramework Core依赖注入上下文方式不同造成内存泄漏了解一下? SQL Server之深入理解STUFF 你必须知道的EntityFramework 6.x和EntityFramework Cor

    Webservice WCF WebApi   注明:改编加组合 在.net平台下,有大量的技术让你创建一个HTTP服务,像Web Service,WCF,现在又出了Web API.在.net平台下, ...

  5. 【知识必备】内存泄漏全解析,从此拒绝ANR,让OOM远离你的身边,跟内存泄漏say byebye

    一.写在前面 对于C++来说,内存泄漏就是new出来的对象没有delete,俗称野指针:而对于java来说,就是new出来的Object放在Heap上无法被GC回收:而这里就把我之前的一篇内存泄漏的总 ...

  6. java内存泄漏的定位与分析

    1.为什么会发生内存泄漏 java 如何检测内在泄漏呢?我们需要一些工具进行检测,并发现内存泄漏问题,不然很容易发生down机问题. 编写java程序最为方便的地方就是我们不需要管理内存的分配和释放, ...

  7. C++程序内存泄漏检测方法

    一.前言 在Linux平台上有valgrind可以非常方便的帮助我们定位内存泄漏,因为Linux在开发领域的使用场景大多是跑服务器,再加上它的开源属性,相对而言,处理问题容易形成“统一”的标准.而在W ...

  8. Android应用内存泄漏的定位、分析与解决策略

    什么是内存泄漏 对于不同的语言平台来说,进行标记回收内存的算法是不一样的,像 Android(Java)则采用 GC-Root 的标记回收算法.下面这张图就展示了 Android 内存的回收管理策略( ...

  9. java内存泄漏

    java内存泄漏主要分成两个方面: (1)堆中申请的空间没有被释放 (2)对象已不在被使用,但是仍然存在在内存当中 以下集中情况可能会导致内存泄漏 (1)静态集合的使用hashmap和vector,静 ...

  10. 内存溢出OOM与内存泄漏ML

    附, 微信团队原创分享:Android内存泄漏监控和优化技巧总结 一.如何避免OOM 异常 想要避免OOM 异常首先我们要知道什么情况下会导致OOM 异常. 1.图片过大导致OOM Android 中 ...

随机推荐

  1. 图文并茂Windows系统使用XAMPP搭建本地mysql数据库导入数据库并使用node.js访问数据库

    点击下载XAMPP 点击启动Apache和Mysql 如果出现这种报错,修改配置文件,一般出现这种情况是因为端口占用 再次尝试START, 成功啦~~ 接下来我们准备一份写好的SQL 文件 输入如下命 ...

  2. angular---angular路由守卫,有的可以访问有的不可以访问,有的路由地址只有在满足条件时候访问,其它禁止访问,

  3. Java 进阶P-8.9+P-8.10

    文件流 File Input Stream File Output Stream 对文件作读写操作 实际工程中已经较少使用 更常用的是以在内存数据或通信数据上建立的流,如数据库的二进制数据读写或网络端 ...

  4. 你知道CDN是干嘛的吗?

    theme: cyanosis 前言 几年前,我在浏览互联网时偶然发现了一个新的电子商务网站,注意到网站上的图片加载速度不快.我刷新了页面并重试了几次.终于,十秒钟后,我能够看到带有图像的渲染网页. ...

  5. Spring中常见的注解

    1.组件注解 @Controller @Service @Repository @Component ---标注一个类为Spring容器的Bean @Configration ---声明当前类为配置类 ...

  6. redis使用bitmap实现签到

    import redis import datetime import calendar ​ r = redis.Redis( host="127.0.0.1", port=637 ...

  7. Kubernetes环境cert-manager部署与应用

    本作品由Galen Suen采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可.由原作者转载自个人站点. 概述 本文用于整理基于Kubernetes环境的cert-manager部 ...

  8. Nginx12 openresty使用lua-resty-http模块

    1 简介 https://github.com/ledgetech/lua-resty-http 在lua中操作http请求有两种方式 第一种方式:使用通过ngx.location.capture 去 ...

  9. .net gRPC初探 - 从一个简单的Demo中了解并学习gRPC

    一..NET 上的 gRPC 的简介 gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. gRPC 的主要优点是: 现代高性能轻量级 RPC 框架. 协定优先 API 开发,默认使用协 ...

  10. 与时俱进的治疗策略不断提高RA无药缓解机会[EULAR2015_SAT0058]

    随时代变迁而进化的治疗策略不断提高RA无药缓解机会 SAT0058 DMARD-FREE SUSTAINED REMISSION IN RHEUMATOID ARTHRITIS: AN OUTCOME ...