Как сделать так, чтобы аварийное приложение WPF было немедленно закрыто (это ключевое слово)? - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть приложение WPF, которое в случае необработанного исключения я хочу

  1. Выключить старое приложение немедленно .
  2. И перезапустите приложение

Для второй цели Я могу легко прослушать событие AppDomain.CurrentDomain.UnhandledException и затем перезапустить то же приложение, используя Process.Start.

Но, во-первых, я, что после возникновения исключения, приложение довольно долго зависает, прежде чем окончательно исчезнет.Я пытаюсь ускорить процесс, вставляя

Application.Current.Shutdown();

И все же, программа все еще занимает много времени, чтобы программа зависла и затем только окончательно закрылась.

Почему это так?дело?

А как я могу сразу закрыть старое приложение?Необработанное исключение в моем приложении уже достаточно плохое, мне не нужно, чтобы умирающее приложение задерживалось достаточно долго и смутило меня.

Вот минимальный пример кода, который воспроизводит проблему:

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);


        AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;
        DispatcherUnhandledException += CurrentApplicationOnDispatcherUnhandledException;



    }

    private void CurrentApplicationOnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
    {

    }

    private void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs e)
    {

        Application.Current.Shutdown();


    }
}


public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void button_Click(object sender, RoutedEventArgs e)
    {
        throw new NotFiniteNumberException();
    }
}

1 Ответ

0 голосов
/ 28 сентября 2018

Дайте System.Environment.Exit(1); попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...