Question

J'enquête actuellement sur un problème lié à un composant tiers (DevExpress) dans mon application. Mon problème est assez similaire à celui-ci de l’article de la base de connaissances DevExpress . Je reçois la même exception avec plus moins le même stacktrace. J'ai donc utilisé .NET Reflector pour déterminer ce qui peut être nul dans ce scénario et le seul objet qui est un candiate à être nul est Graphics. Ceci est créé avec Graphics.FromHwnd (IntPtr.Zero). Etant donné que je n'ai pas une connaissance étendue de GDI, j'aimerais savoir si quelqu'un peut me dire des scénarios possibles lorsque cela peut renvoyer une valeur nulle ...

J'ai essayé de le reproduire dans un scénario où Windows est en dehors des descripteurs GDI, mais je reçois alors un "en dehors des descripteurs". - une exception au moins une fois, ce qui n’est pas le cas dans le dossier sur lequel j’enquête

tia, Martin

Était-ce utile?

La solution

D'après mes souvenirs, un HWND de 0 (en réalité, IntPtr.Zero) est un descripteur du bureau de la session de l'utilisateur en cours. Il peut être utilisé pour mesurer diverses mesures du système. Il doit s'agir d'une valeur valide pour Graphics.FromHwnd.

Cependant, GDI + regorge de bogues et son intégration .NET est tellement instable qu'il est tout à fait possible que votre code ou DevExpress ne soit pas défectueux, à part qu'il n'utilise que GDI +.

Autres conseils

Tout d’abord, vous utilisez la structure IntPtr et vous l’initialisez à zéro. Ensuite, vous transmettez cette poignée à la classe Graphics. Sauf si vous avez une fenêtre avec un handle == 0 , une valeur null correspond exactement à ce à quoi je m'attendrais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top