Я прочитал в этом сообщении, что во избежание «программа остановлена работает », мне нужно перехватить необработанное исключение из AppDomain.
public Form1()
{
///Code
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
///more code
}
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
var excep = e.ExceptionObject;
//Writing the exception to log file with the stack flow
Logger.Logger.LogException("UNHANDLED EXCEPTION:"+Environment.NewLine +excep.ToString(), this);
//Terminate the logger (manual event waiting for file write to finish)
Logger.Logger.Terminate();
Environment.Exit(1);
}
Но когда я вдыхаю исключение. Я вижу это записано в журнале, но приложение показывает диалог «программа перестала работать». может это быть вызвано строкой Logger.Terminate
? (опять же - команда terminate ждет, пока все журналы не будут записаны в файл журнала)
StackOverflowException
) могут остановить весь процесс до того, как какой-либо обработчик получит возможность запуститься. - person   schedule 27.11.2015