Pergunta

Atualmente estou investigando um problema com um componente 3o partido (DevExpress) em meu aplicativo. A minha questão é bastante similar a esta DevExpress KB artigo . Eu recebo a mesma exceção com mais menos o mesmo stacktrace. Então eu usei .NET Reflector para descobrir, o que pode ser nulo neste cenário, e o único objeto que é uma candiate ser nula é Graphics. Este é criado com Graphics.FromHwnd (IntPtr.Zero). Porque eu não ter um amplo conhecimento sobre a GDI, eu gostaria de saber se alguém pode me dizer cenários possíveis quando este pode retornar nulo ...

Eu tentei reproduzi-lo em um cenário onde as janelas está fora do GDI alça de, mas então eu estou recebendo um "fora de alças" - exceção pelo menos uma vez, que não é o caso na edição Estou investigando

tia, Martin

Foi útil?

Solução

Pelo que me lembro, um HWND de 0 (efetivamente IntPtr.Zero) é um identificador para o desktop do usuário atual sessão. Ele pode ser usado para medir várias métricas do sistema e deve ser um valor válido para Graphics.FromHwnd.

No entanto, GDI + é tão cheio de bugs ea integração .NET com ele é tão instável que é muito possível que não há nada de errado com seu código ou DevExpress diferente do que apenas utiliza GDI +.

Outras dicas

Em primeiro lugar, você está usando a estrutura IntPtr e inicializando-lo a zero. Então você está passando esse identificador para a classe Graphics. A menos que você tem uma janela com uma handle == 0, um valor null é exatamente o que eu poderia esperar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top