Какое рекомендуемое руководство или шаблон для методов, которые могут истечь в .Net? - PullRequest
2 голосов
/ 03 марта 2011

ServiceController.WaitForStatus (статус, тайм-аут) выдает исключение TimeoutException, если операция не завершена.

Process.WaitForExit (время ожидания), с другой стороны, возвращает логическое значение - true, если операция завершена; иначе ложь.

Есть ли рекомендации на будущее?

Сообщение форума MSDN Connect , которое я обнаружил, склоняется к подходу TimeoutException. Может кто-нибудь подтвердить, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Найдена неуловимая рекомендация на странице MSDN .

Лучше всего использовать Структура TimeSpan как время ожидания тип. TimeSpan решает проблемы с целыми тайм-аутами, упомянутыми выше.

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

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

По-видимому, вам нужно выполнить поиск с помощью «time-out», в то время как все API используют «timeout» в качестве имени параметра.

2 голосов
/ 03 марта 2011

Все зависит от ожидаемого результата.Если для какого-либо процесса ожидается тайм-аут (например, ожидание пользовательского ввода), вы делаете его кодом возврата.Если тайм-аут является вероятной причиной ошибки (например, работа сети), вы делаете это исключением.Вы могли бы даже иметь две версии: одна, которая возвращает значение, указывающее, истекло ли время, и другая, которая просто генерирует исключение.

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