我正在调查我的应用程序中第三方组件(DevExpress)的问题。 我的问题非常类似于DevExpress KB article。我得到相同的异常与更少相同的堆栈跟踪。 所以我使用.NET Reflector来查找,在这种情况下可能为null,并且唯一一个空白的对象是Graphics。 这是使用Graphics.FromHwnd(IntPtr.Zero)创建的。因为我对GDI没有广泛的了解,所以我想知道是否有人可以告诉我可能会返回null的情况......
我尝试在Windows没有GDI句柄的情况下重现它,但后来我得到了一个“没有句柄” - 至少一次异常,这不是我正在调查的问题中的情况< / p>
TIA, 马丁
答案 0 :(得分:0)
首先,您正在使用IntPtr
结构并将其初始化为零。然后,您将此句柄传递给Graphics类。除非您有一个handle == 0
的窗口,否则null
值正是我所期望的。
答案 1 :(得分:0)
据我所知,HWND为0(实际上是IntPtr.Zero)是当前用户会话桌面的句柄。它可以用来衡量系统的各种指标,它应该是Graphics.FromHwnd的有效值。
然而,GDI +充满了错误,.NET与它的集成非常不稳定,除了使用GDI +之外,你的代码或DevExpress很可能没有错。