Pergunta

No meu aplicativo C#, até eu lida com a exceção:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException +=
    new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

e então, no manipulador, mostrando a caixa de diálogo e fazendo o aplicativo.Exit ainda obtendo a caixa de diálogo Relatórios de erros do Windows com envio, não envie ...

Como impedir que o diálogo de relatórios de erros do Windows apareça?


De fato, se a exceção for lançada do construtor de forma principal, o programa acaba com o relatório de erro do Windows DLG. Caso contrário, se de algum outro local do encadeamento da interface do usuário, como esperado.

Foi útil?

Solução

Você precisará encerrar o aplicativo você mesmo. Isso fará isso:

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {
  var ex = e.ExceptionObject as Exception;
  MessageBox.Show(ex.ToString());
  if (!System.Diagnostics.Debugger.IsAttached)
    Environment.Exit(System.Runtime.InteropServices.Marshal.GetHRForException(ex));
}

Outras dicas

A caixa de diálogo que apresenta a opção de enviar ou não enviar um relatório de erro para a Microsoft está além das exceções. Isso pode acontecer se você usar blocos {} inseguros ou usar o P/Invoke's que realizam alguma operação ilegal.

Eu acho que você não deveria estar lutando contra os sintomas do seu problema. As exceções não atendidas não devem acontecer em primeiro lugar.

Você tem alguma pista sobre o que os está causando?

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