0

我目前正在调查我的应用程序中的第 3 方组件 (DevExpress) 的问题。我的问题与这篇DevExpress 知识库文章非常相似。我得到相同的异常,但堆栈跟踪更少。所以我使用 .NET Reflector 来找出在这种情况下可能为 null 的对象,唯一可以为 null 的对象是 Graphics。这是使用 Graphics.FromHwnd(IntPtr.Zero) 创建的。因为我对 GDI 没有广泛的了解,所以我想知道是否有人可以告诉我这可能返回 null 的可能场景......

我试图在 Windows 超出 GDI 句柄的情况下重现它,但随后我得到一个“句柄不足”的情况 - 至少有一次异常,这不是我正在调查的问题的情况

蒂亚,马丁

4

2 回答 2

0

首先,您正在使用该IntPtr结构并将其初始化为零。然后将此句柄传递给 Graphics 类。除非您有一个带有 的窗口,否则handle == 0null正是我所期望的。

于 2010-04-30T03:28:10.430 回答
0

据我回忆,HWND 为 0(实际上是 IntPtr.Zero)是当前用户会话桌面的句柄。它可用于衡量系统的各种指标,它应该是 Graphics.FromHwnd 的有效值。

但是,GDI+ 漏洞百出,与它的 .NET 集成非常不稳定,您的代码或 DevExpress 很可能没有任何问题,只是使用了 GDI+。

于 2010-04-30T03:34:40.797 回答