Как отобразить окно сообщения и сохранить выполнение приложения
В Visual C# возникает исключение, вызовите окно сообщения для отображения сообщения об ошибке. Как я могу продолжить выполнение моей программы, не дожидаясь закрытия окна сообщения.
2 ответа
Вместо того, чтобы использовать MessageBox.Show
, вы можете сделать свое собственное сообщение об ошибке Form
и показать это немодальным способом, используя Form.Show()
метод. Это позволит вашему потоку пользовательского интерфейса продолжать работу.
Конечно, это также означает, что вам придется настроить несколько вещей, таких как размер, выравнивание текста и тому подобное. Но это не должно быть слишком большой проблемой, если вы действительно хотите использовать это для одной задачи.
Должен сказать, что я нахожу ваш подход довольно странным. Обычно, когда возникает ошибка, и вы хотите, чтобы пользователь был проинформирован о ней, вы хотите, чтобы приложение удерживалось до закрытия окна сообщения. Невыполнение этого требования может привести к множеству неожиданных проблем. Например: что произойдет, если другая ошибка возникнет, когда ошибка уже отображается?
Если вам нужно выполнить определенную задачу, пока поток пользовательского интерфейса находится в режиме ожидания, я настоятельно рекомендую вам по возможности заняться этим в новом потоке. Это должно дать вам то, что вы хотите, сохраняя при этом ожидания конечного пользователя.
Если вам абсолютно необходимо запустить его неблокирующим образом, вы можете инициализировать окно сообщения в отдельном потоке:
Task.Run(() => MessageBox.Show("Test"));
Кроме того, если вам нужно передать результат диалога (Ok/Cancel), то, вероятно, весь метод должен быть запущен в новом потоке.
Task.Run(
() =>
{
if (MessageBox.Show("Test", "test", MessageBoxButtons.OkCancel) == DialogResult.OK)
{
MessageBox.Show("Ok");
}
else
{
MessageBox.Show("Cancel");
}
}
);