К моему knoweldge единственный способ определить, успешно ли выполнен односторонний метод, является ли он генерирующим исключение.
Если метод не является односторонним, вы можете вернуть обратно логическое значение, которое указывает, был ли метод неудачным или не удалось.
Могу я спросить, почему вы пытаетесь это сделать? Не вылавливая исключение в методе, невозможно определить условия ошибки, если исключение не существует.
Если я не понимаю ваше использование «попытки», и вы имеете в виду, что не выполняете этот метод, вы можете написать прокси для метода, который на самом деле не совершает действие, только шаг обработки.
Если вы делаете это для целей полного тестирования, я хотел бы рекомендовать использовать модульные тесты Visual Studio или подключить ваш проект к NUnit.
Просьба представить более подробную информацию о том, что вы пытаетесь выполнить, если один из указанных выше пунктов не ответил на ваш вопрос.
EDIT: модифицировано для учёта разъяснений.
using(YourService svc = new YourService()){
if(svc.State.Equals(!CommunicationState.Opened)){ /*Handle Error*/ }
svc.InnerChannel.Faulted += new EventHandler(YourFaultedEventHander);
}
будет охватывать вас, чтобы увидеть, если соединение в настоящее время открыт и уведомляет вас, если/когда услуга переходит в поврежденном состоянии. Это будет предупреждать вас о том, будет ли вызов успешным. Тем не менее, все еще существуют условия, которые могут привести к сбою определенного метода. Это только сообщит вам, если вы можете успешно вызвать метод службы.
Хорошо, так что, если метод работает прямо сейчас. Таким образом, вы называете метод, но он снизился тем временем? Будет ли у вас приложение просто сбой, или вы будете использовать блок try/catch? –
См. Обновление в моем первоначальном комментарии. Он охватывает уведомление о неисправном состоянии, а также определение текущего состояния служб. – VulgarBinary