одно сообщение - PullRequest
       4

одно сообщение

1 голос
/ 07 февраля 2012

Я пишу приложение, в котором, когда что-то случилось с соединением, я хочу открыть окно сообщения и показать пользователю ошибку ...

для этой цели, когда программа сгенерирует исключение, она попадет в блок catch, и в этом я хочу показать пользователю, что сообщение здесь представляет собой код:

        catch (WebException ex)
        {
            if (!(ex.Message == "The operation has timed out."))
            {
                  MessageBox.Show(ex.Message);
            }

        }

Как кажется, программа будет приходить к этой ловушке что-то вроде навсегда до тех пор, пока не установится соединение, так что я должен сделать, чтобы обновлять мое сообщение только по одному почтовому ящику за раз?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2012

Вы можете использовать что-то вроде:

public static class FailureMessagebox
{
    private static bool _hasBeenSuccessful = true;

    public static void ShowIfFailure(Action someAction)
    {
        try
        {
            someAction();
            _hasBeenSuccessful = false;
        }
        catch (Exception err)
        {
            if (_hasBeenSuccessful)
                MessageBox.Show(ex.Message);

            _hasBeenSuccessful = false;
                    throw;
        }
    }
}

Пример использования:

try
{
   WebResponse response;
   FailureMessagebox.ShowIfFailure(() => response = webRequest.GetResponse());
}
catch (WebException err)
{
   //handle the exception here.
}
0 голосов
/ 07 февраля 2012

Нет большого контроля над MessageBox при его отображении.Я бы использовал другой Form, отображаемый в модальном режиме.Перед отображением вы можете запустить отдельный поток и поставить логику для контроля соединения.После восстановления сообщите форму сообщения и закройте ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...