C# 如何捕获(并有望修复)GDI资源泄漏
我的应用程序在运行6小时后记录异常: 操作系统版本:Microsoft Windows NT 5.1.2600 Service Pack 3(5.1.2600.196608) .NET版本:2.0.50727.3082 SQL Server版本:9.00.4035.00 SQL Server级别:SP3 SQL Server版本:标准版 错误消息:参数无效 异常类型:System.ArgumentException 资料来源:系统图C# 如何捕获(并有望修复)GDI资源泄漏,c#,user-interface,gdi,resources,memory-leaks,C#,User Interface,Gdi,Resources,Memory Leaks,我的应用程序在运行6小时后记录异常: 操作系统版本:Microsoft Windows NT 5.1.2600 Service Pack 3(5.1.2600.196608) .NET版本:2.0.50727.3082 SQL Server版本:9.00.4035.00 SQL Server级别:SP3 SQL Server版本:标准版 错误消息:参数无效 异常类型:System.ArgumentException 资料来源:系统图 Stack Trace: at System.Drawing
Stack Trace:
at System.Drawing.Graphics.GetHdc()
at System.Windows.Forms.ImageList.GetBitmap(Int32 index)
at System.Windows.Forms.ImageList.ImageCollection.get_Item(Int32 index)
<<< MY code >>>
堆栈跟踪:
在System.Drawing.Graphics.GetHdc()中
位于System.Windows.Forms.ImageList.GetBitmap(Int32索引)
位于System.Windows.Forms.ImageList.ImageCollection.get_项(Int32索引)
>
为我工作。它指向字体泄漏。我搜索了ToHfont()。其余的都是历史。最近我创建了一个简单的类,它调用构造函数和析构函数中的函数,并报告GDI对象计数的任何差异。在一些函数中将其用作作用域对象有助于我在代码中插入GDI泄漏。请发布代码的相关部分。问题的本质是关于分析大型项目的GUI资源泄漏。如果有一个好的分析技术,我的代码就变得无关紧要了。我想非托管资源跟踪器是一个很好的起点。GDIView基本上也做同样的事情。。但是没有代码可写。我希望Nir Sofer能说出来,这样我就可以给他应得的信条。谢谢你!它只是帮助我解决了我的GDI手柄达到10K极限的问题。