Некоторое время назад я столкнулся с ситуацией, когда нам нужно было отображать окна сообщений пользователю для уведомлений, но мы не могли использовать MessageBox.Show, потому что он блокирует поток GUI (поэтому на экране ничего не обновляется, пока диалоговое окно активный). Есть предложения по альтернативе?
[Я тогда закодировал альтернативу, но она мне не нравится. Я отправлю это как ответ, если ничто лучше не появляется все же]
РЕДАКТИРОВАТЬ: диалог должен плавать в верхней части главного окна; Мне все равно, если он появляется на панели задач или нет. При определенных обстоятельствах одновременно может быть активным несколько диалогов.
ADDENDUM: моим решением была базовая форма, в которой были кнопки OK и CANCEL для выдачи завершенных и отмененных событий; OK вызвал виртуальный ValidateData для переопределения подкласса. Вызывающая форма использовала свойства, чтобы избежать повторного создания формы каждый раз (форма была просто скрыта, а не закрыта), и хранила словарь активных форм, чтобы одна и та же форма не активировалась более одного раза. Это похоже на модальную форму, поддерживает несколько всплывающих форм одновременно, но не связывает основной поток GUI.