2010-02-23 3 views
0

Привет, Я разрабатываю некоторые приложения в WPF. Клиент написан в WPF, служба в WCF. Существует случай, когда клиент теряет соединение с сервером (из-за проблем с Интернетом). Затем он имеет следующую ошибку: «Объект связи, System.ServiceModel.Channels.ServiceChannel, не может использоваться для связи, поскольку он находится в состоянии Faulted». и выключение приложения. После того, как это сообщение будет показано, и клиент щелкнет «ОК» в окне сообщения, приложение закрывается. Я не хочу, чтобы он был закрыт. Как я могу это сделать? Я использую развертывание ClickOnce, если это поможет, каждый раз клиент запускает приложение, которое ищет новую версию. Я обработка исключений следующим образом при создании каналаПриложение закрывается при потере соединения с сервером

try 
     { 

      Response response = Channel.ProcessRequest(request); 
      return response; 
     } 
     catch (Exception ex) 
     { 
       MessageBox.Show(ex.Message.ToString()); 
      return null; 
     } 
     finally 
     { 

     } 
+0

Как вы обрабатываете необработанные исключения? – Anvaka

ответ

1

Похоже, что ваш обработчик Одеяла исключения делает трюк. Вы поймаете ошибку и покажете ее пользователю. Однако вы возвращаете null. Не видя никакого другого кода, я могу только догадываться, что вызывающий абонент не оценивает получение нулевого ответа, и приложение умирает, хотя я бы ожидал необработанное исключение. Но вверх по течению у вас также может быть другой блок try/catch, который молча игнорирует это исключение. Никто не может сказать вам, если вы не предоставите более подробную информацию.

Смежные вопросы