winforms – 拖放如何影响Windows窗体应用程序中的内存使用?
发布时间:2020-12-14 05:26:06 所属栏目:Windows 来源:网络整理
导读:我在使用Visual Studio 2010开发的 Windows窗体应用程序时遇到了一个奇怪的内存错误.我使用的是C#和.NET 4.0,但我不认为这是一个因素.要重现,请启动新的Windows窗体应用程序并添加一个按钮.然后粘贴以下代码: public Form1(){ InitializeComponent(); Allow
我在使用Visual Studio 2010开发的
Windows窗体应用程序时遇到了一个奇怪的内存错误.我使用的是C#和.NET 4.0,但我不认为这是一个因素.要重现,请启动新的Windows窗体应用程序并添加一个按钮.然后粘贴以下代码:
public Form1() { InitializeComponent(); AllowDrop = true; DragEnter += new DragEventHandler(Form1_DragEnter); button1.Click += new EventHandler(button1_Click); } private void Form1_DragEnter(object sender,DragEventArgs e) { e.Effect = DragDropEffects.Link; } private void button1_Click(object sender,EventArgs e) { for(int i = 1; i <= 100000; i++) { DataGridView dgv = new DataGridView(); // or any other large object if(i % 100 == 0) Console.WriteLine("{0}: {1} MB memory in use",i,Environment.WorkingSet / 1024 / 1024); } } 运行程序,单击按钮,然后在输出窗口中查看内存使用情况.随着垃圾收集在多个周期中发生,它会飙升然后再下降.然后再次运行它,将任何随机文件或文件夹拖到窗体上,直到您获得链接图标,然后再次单击该按钮.这次内存使用量应该单调增加,就像没有调用垃圾收集一样,或者仍然存在对生成的所有对象的有效引用. 如何将光标设置为链接拖放效果会影响内存使用情况,如此??? 解决方法
这是一个已知的WinForms泄漏.
当AllowDrop属性设置为True时发生. 如果将其设置为False,CLR将清除内存. 避免它的最佳方法是不要将表单用作目标drop容器. 您可以使用类似于容器的小面板来切换AllowDrop属性. 这也有效: void Form2_DragDrop(object sender,DragEventArgs e) { AllowDrop = false; GC.Collect(); GC.Collect(); AllowDrop = true; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- winforms – 在Windows窗体中暂停控制事件的最佳方法?
- ms-solver-foundation – Microsoft Solver Foundation是否
- windows-8 – 在Visual Studio 2012中发布MVC项目导致空文件
- 将x86 / 64 Windows程序移植到Windows 8 ARM
- windows-server-2008-r2 – IIS7 Windows身份验证提供程序
- 调试 – 在Windows Server 2003中创建进程的内存转储?
- 批处理文件 – 以编程方式更改和刷新图标(无需重新启动)
- windows – 如何通过脚本切换代理设置?
- 窗口 – 管道输出(stdout)从运行进程Win32Api
- windows-server-2003 – Windows 2003 ODBC问题 – 错误100
推荐文章
站长推荐
- windows – 我们什么时候应该使用分散/聚集(向量
- wpf – 如何使用正确的Windows系统颜色?
- windows-server-2008 – AD复制监视器
- Win10系统Cortana 小娜无法搜索
- 在Windows上git:“错误:稀疏检出在工作目录中没
- Windows Phone ApplicationBar BackgroundColor属
- windows – git如何清理克隆的存储库并重新克隆
- 使用autohotkey定制windows 10 虚拟桌面的快捷键
- Windows – sox FAIL util:无法加载MAD解码器库
- 完美解决windows10磁盘占用100%并出现卡顿、假死
热点阅读