O que poderia causar um .NET WinForms aplicativo para perto suddently sem um diálogo?

StackOverflow https://stackoverflow.com/questions/201614

  •  03-07-2019
  •  | 
  •  

Pergunta

aplicação Nossos WinForms tem sido relatada a ocasionalmente apenas perto por conta própria. Ele não mostra o nosso erro próprio acidente enviar diálogo nem de erro do Windows' diálogo submeter, ele só se fecha e se foi, muitas vezes, quando a pessoa foi afk e não fazer nada com o aplicativo. Parece ser uma ocorrência semi-raro, talvez como 2-3 vezes por mês, e isso aconteceu mais de uma pessoa. Eu não tenho idéia por onde começar com a obtenção de um caso repro ou onde começar a acompanhar este baixo.

C # NET 2.0 Os casos relatados estão em Win XP

Alguém tem alguma idéia?

Foi útil?

Solução

Stack transborda devido a recursão infinita são uma grande causa de aplicativos parar de fumar sem nenhum aviso. A menos que você tenha feito algo deliberado para causar uma saída silenciosa, então não manipulado exceções (exceto estouro de pilha) normalmente exibir algum tipo de interface do usuário antes que os quites de aplicativos. Estouro de pilha é a exceção comum a maioria (oops, desculpe) a esta regra.

Claro que, a partir do código não gerenciado ou inseguro é quase certamente possível para perturbar o tempo de execução no caminho certo para causar uma saída silenciosa.

As sugestões sobre instrumentação e olhando para log de eventos do Windows são bons também.

Outras dicas

Exceções irá causar um aplicativo para "desaparecer". Verifique os logs de eventos para ver se alguma coisa estava lá.

Verifique gerenciador de tarefas para ver se o processo ainda está presente quando a janela desaparece. Tive acidente explorador e não redesenhar a janela até que fosse Alt-tabulada ou Switched-To (do gerenciador de tarefas).

Não colocá-lo passado os usuários esquecer convenientemente que eles estão fechando o aplicativo. Você pode querer colocar alguma lógica de registro no aplicativo para registrar fechamentos iniciado pelo usuário. Da próxima vez que "desaparece", você pode verificar se há quaisquer entradas de registo.

Você pode adicionar alguma lógica no caso FormClosing para perguntar ao usuário se isso é o que eles realmente querem fazer, então você pode cancelar o evento de encerramento e sua aplicação continuará a funcionar se está tudo bem. Se você continuar a perceber este problema e nunca realiza sua lógica, você vai ter que sujar as mãos no depurador.

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