Как отобразить окно сообщения и сохранить выполнение приложения

В 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");
            }
        }
    );
Другие вопросы по тегам