Non-автоблокировка MessageBoxes в c # - PullRequest
12 голосов
/ 22 ноября 2010

Кто-нибудь знает ящик сообщений в .NET, который не блокирует созданный им поток, пока он не будет закрыт?

Ответы [ 4 ]

22 голосов
/ 22 ноября 2010
private void ShowMessageBox(string text, string caption)
{
    Thread t = new Thread(() => MyMessageBox(text, caption));
    t.Start();
}

private void MyMessageBox(object text, object caption)
{
    MessageBox.Show((string)text, (string)caption);
}

Вы можете позвонить ShowMessageBox() со своим текстом и подписью.Это всего лишь простой пример, вы можете добавить кнопки или иконки владельца или другие нужные аргументы.

11 голосов
/ 09 февраля 2015

Вероятно, самое простое:

Thread t = new Thread(() => MessageBox.Show(text));
t.Start();
11 голосов
/ 22 ноября 2010

Значение по умолчанию MessageBox, которое вы используете через пространство имен System.Windows.Forms, всегда будет модальным (то есть блокирующим). Если вы хотите иметь немодальное окно сообщения, вы должны создать свой собственный WindowsForm, который выглядит как MessageBox.

Затем вы отобразите эту форму следующим образом:

// C#
//Display frmAbout as a modeless dialog
Form f= new Form();
f.Show();
10 голосов
/ 09 марта 2017

Вы можете упростить эти другие ответы до одной строки кода

new Thread(() => System.Windows.Forms.MessageBox.Show(text)).Start();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...