【问题标题】:Win Form app controls turn Black and app locks up when minimized too longWin Form 应用程序控件在最小化时间过长时变为黑色并且应用程序锁定
【发布时间】:2010-01-26 14:21:10
【问题描述】:

我有一个 Windows 窗体桌面 CRUD 应用程序。用户会发现,如果它放置太久,最小化所有控件都会变成黑色填充框,并且它变得无响应。

这是我的第一个大型应用程序,我什至无法弄清楚从哪里开始。在网上搜索“黑色填充框”并没有真正的成效……

我做错了什么?我可以从哪里开始寻找?我的应用程序是一个单一的表单,它根据他们在表单的导航菜单中选择的内容在主区域中嵌入必要的用户控件。

示例;他们选择保险,它会在ShellForm 的主要内容区域中显示ucInsurance

想法?我会很感激任何事情。我尝试为 Shell 表单和所有用户控件打开 Double Buffer,但这似乎没有效果。

【问题讨论】:

    标签: .net winforms .net-3.5


    【解决方案1】:

    首先查看您的表单在 Taskmgr.exe 中的表现。单击进程选项卡,查看 + 选择列并勾选句柄、用户对象、GDI 对象。如果您的进程的这些列中的任何一个不断攀升,那么您就会遇到资源泄漏,通常是因为忘记了 Dispose()。 GDI 可能是您描述中的一个。到10000人就结束了。

    【讨论】:

    • 我这样做了,在打开我的应用程序并弹跳 5 分钟后,搜索并加载了几个人,我的统计数据是 --> MemUsage=81000K,Handles=567,Threads=16 , USERObjects=412, GDIObjects=301。这么快就引起这么高的关注吗?我将保持打开状态,稍后也会报告我的发现。
    • 另外,我的应用程序的 memusage 在最小化时下降到 4000K,然后在最大化时仅返回到大约 12000K,而之前是 80000+K,这是否“正常”?
    • 是的,这很正常。当其主窗口最小化时,Windows 会积极修剪进程的工作集。不注意记忆。请尝试重现客户的问题,不触发垃圾收集的空闲表单会因忘记调用 Dispose() 而与泄漏相关联。
    • 谢谢,不知道。我现在暂时搁置它。幸运的是,这只是一个内部应用程序,它仍处于测试阶段!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多