Как реализовать шаблон Ignore / Retry / Cancel для действия? - PullRequest
2 голосов
/ 25 мая 2011

У меня есть двухслойное приложение Windows-Forms, разработанное на C # .NET 4.0.В этом приложении я читаю содержимое файла и создаю список объектов в Data-Access-Layer и возвращаю его в GUI-Layer для отображения в виде сетки.В моей текущей логике, если одна из строк в файле повреждена или имеет неверный формат (что я не могу создать объект из нее) или какие-либо другие исключения, я выбрасываю исключение и отменяю процесс.Теперь, как я могу реализовать шаблон Ignore / Retry / Cancel?Я имею в виду, что является лучшим способом показать диалоговое окно Ignore / Retry / Cancel и делать все, что хочет пользователь (например, игнорировать текущую строку и перейти к следующей строке, отменить процесс или повторить текущее чтение строки с ошибками)?есть ли для этого шаблон?

1 Ответ

10 голосов
/ 25 мая 2011

Я принимаю следующий шаблон при предложении таких опций:

DialogResult result = DialogResult.Retry;
while (result == DialogResult.Retry) {
    try {
        DoProcess();
        break;
    }
    catch {
        result = MessageBox.Show(errorMessage, caption, MessageBoxButtons.AbortRetryIgnore);
        if (result == DialogResult.Abort) throw;
    }
}

Если пользователь выберет «Повторить», цикл снова запустится. Если пользователь нажимает кнопку «Прервать», будет сгенерировано исключение (которое будет перехвачено далее по цепочке и, следовательно, прервет оставшуюся часть операции). Игнорирование приведет к выходу из цикла без исключения. Я не могу придумать более краткий способ сделать это.

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