В моем приложении у меня есть задача, которая выполняется в фоновом потоке. Мне нужно уведомление в фоновом потоке, когда когда-либо MessageBox или любой модальный диалог отображается в потоке пользовательского интерфейса.
Хотя я могу сделать это вручную, вызвав некоторую функцию перед отображением MessageBox, но было бы здорово, если бы мне это не нужно.
Например ,::1005*
backgroundThread.MessageShown(); // I do not want to call this explicitly every time!
MessageBox.Show("Task halted!");
Я предполагаю, что может быть какое-то сообщение, к которому можно подключиться. Даже в основном потоке графического интерфейса, есть ли какое-либо сообщение / событие, которое запускается непосредственно перед показом модального диалога?
Хорошо, вот требование. У меня есть некоторые задачи, которые выполняются в потоке пользовательского интерфейса, и я должен показать прогресс в отдельном диалоге, который показан в рабочем потоке. Я понимаю, что это должны быть задачи, которые должны выполняться в рабочем потоке, но текущий сценарий пока нельзя изменить.
Все работает нормально, за исключением одного сбоя - если в потоке пользовательского интерфейса отображается окно сообщения, оно скрывается под диалоговым окном хода выполнения. Таким образом, пользователь никогда не узнает, что пользовательский интерфейс ожидает ввода. Мне нужен способ получить уведомление о том, что было показано модальное диалоговое окно, и я должен скрыть диалоговое окно прогресса.
Прямо сейчас я должен скрывать это явно перед каждым вызовом MessageBox.
Надеюсь, это объясняет.