Исключение внешнего потока не перехватывается в событии DispatcherUnhandledException - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь обработать любое исключение фонового потока, используя событие App.DispatcherUnhandledException , потому что я полностью перехватываю их и записываю в журнал. Я попытался сделать это ниже, но событие не было вызвано, и мое приложение зависло.

public class MainWindow : Window
{
    public MainWindow()
    {
        client = new Client();
        client.OnSocketError += (s, e) => Dispatcher.Invoke(() => throw e.Exception); // re-throwing
        client.Connect("192.168.1.5", "1234");
    }
}

Возможно ли повторно вызвать исключение для основного потока?

Обратите внимание, что событие возникает при возникновении исключения из основного потока.

1 Ответ

1 голос
/ 19 апреля 2020

Я заменил эту строку:

Dispatcher.Invoke(() => throw e.Exception);

На эту:

Dispatcher.BeginInvoke(new Action(() => throw e.Exception));

И теперь она работает правильно.

Я думаю, причина в том, что * 1009 Метод * Invoke оставил EventHandler заблокированным, а метод BeginInvoke - нет.

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