У меня есть вопрос о дизайне пользовательского интерфейса.
Я хотел бы выйти из приложения, когда оно встретило исключение в потоке, не являющемся пользовательским интерфейсом.
По сути, событие выглядит так:
Основная форма -> ShowDialog для подпроцесса WinForm (MainThread) -> Запуск фонового потока (WorkerThread) -> Возникновение исключения -> Отображение ErrorForm (WorkerThread)
Когда пользователь нажимает кнопку «Выход» наErrorForm, я хочу выйти из всего приложения.Однако выполнение следующего вызова не работает.
Invoker.Invoke((Action)(() => { Application.Exit(); }), null);
Ссылка Invoker на главную форму SynchronizedContext.Однако, так как MainThread все еще ожидает, пока subWinForm вернет свой элемент управления, он, вероятно, не сможет обработать Application.Exit ().
Что может быть лучше для обработки исключения, которое выбрасывается фономрабочий поток?