.NET как отловаить внезапный crash программы
Имеется такая проблема, как внезапные завершение программы на некоторыx компьютераx, без ошибки или еще чего либо. К сожалению debug-тестами, так и не удалось выяснить чем же является данная проблема.
Интересует сообственно метод, которым можно было бы отлавливать внезапные завершения/crash программы. Желательно с log-файлом, с записью разной информации.
Ответы (1 шт):
Если это Framework 4.x Windows Form App то в свойствах проекта, вкладка Application есть кнопка View Application Events, и собственно событие Me.UnhandledException, которое вызывается если исключение не было обработано явно.
Если это Core 5 или 6 WPF то можно повесить обработчик, например:
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Собственно там можно реализовывать обработку внезапностей или общую логику.
Например:
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Loaded += MainWindow_Loaded;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Log.Write(Log.Level.Info, $"DataSource: {Properties.Settings.Default.MsSqlDataSource}");
DataContext = new InstallerViewModel();
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Exception ex = (Exception) e.ExceptionObject;
Log.Write(Log.Level.Error, ex.Message);
Log.Close();
}
}