我们正在开发一个非常大的.NET WinForms复合应用程序 - 不是CAB,而是一个类似的本土框架.我们正在运行在Windows Server 2003上的Citrix和RDP环境中运行.
我们开始遇到随机和难以复制的"错误创建窗口句柄"错误,这似乎是我们的应用程序中的旧时尚句柄泄漏.我们正在大量使用第三方控件(Janus GridEX,Infralution VirtualTree和.NET Magic对接),我们根据数据库中的元数据进行了大量动态加载和内容呈现.
谷歌有很多关于这个错误的信息,但没有很多关于如何避免这方面问题的可靠指导.
stackoverflow社区是否对我构建易于操作的winforms应用程序有任何良好的指导?
我不太清楚如何去做这件事.它是一个大型应用程序,我们在大多数表单上都有GDI对象"泄漏".
有帮助的工具吗?有关于如何使用这种工具的教程吗?
我应该开始从我们的表单中删除代码,直到我缩小罪犯的范围?(有很多代码).
我需要在.NET应用程序中找出内存不足(OOM)异常的原因.使用perfmon时,当使用相对较低的内存(500-700mb)时,应用程序会与OOM崩溃,所以我假设某种堆碎片.
在研究之后,看起来WinDBG就是用来跟踪这类问题的工具.我在运行进程的服务器上设置了DebugDiag.我还设法将DebugDiag中的转储加载到WinDBG中,连接符号服务器和我自己的私有符号文件,这一切似乎都有效 - 我可以运行类似的命令!clrstack,!dumpheap -stat并且我会看到列出的类名.
我现在遇到的问题是我不知道如何解决追踪碎片的问题.WinDGB有很多命令,有很多不同的标志和选项,我不确定我应该使用哪些.我无法找到一个关于该做什么的好教程 - 大多数都是关于让WinDBG启动和运行的基本知识.
有人能指出我正确的方向吗?
我正在开发一个SDG(单显示器组件)应用程序,为此我需要多个游标(最简单的不同颜色)用于单个窗口.我开始知道使用C#你可以使用黑白游标,但这并不能解决我的问题.所以请帮我解决这个问题.
提前致谢.