2013-09-23 11 views
0

В главном потоке пользовательского интерфейса отображается всплывающее диалоговое окно (форма). Я хотел бы заставить поток пользовательского интерфейса закрыть это всплывающее диалоговое окно и выбросить исключение из потока пользовательского интерфейса (из другого потока), когда будет получен запрос о прерывании.Throw Исключение из потока пользовательского интерфейса

Возможно ли это?

+0

Возможно, вы можете использовать SynchronizationContext. – user844541

+0

Почему вы не можете использовать диспетчер для закрытия всплывающего диалогового окна? – user844541

+1

Исключения не пересекают границы нитей. Вы должны использовать Control.BeginInvoke() для запуска кода в потоке пользовательского интерфейса. Который, конечно, может закрыть диалог. –

ответ

2

Не выбрасывайте исключение. Исключением нельзя поймать другой поток. Выставьте публичный метод, который будет вызывать близко на форме:

DlgForm.BeginInvoke(new MethodInvoker(Close)); 

и установить «» прерванный государственный флаг, что пользовательский интерфейс можно использовать после того, как диалоговое окно закроется.

Смежные вопросы