2013-07-24 3 views
0

ServiceHost가 유효한지 확인하기 위해 bool isAlive() 메소드가있는 NetNamedPipeBinding이 있습니다. 어떤 호스트가 없어도ServiceHost가 살아 있는지 확인하십시오.

while (!stopThread) 
     { 
      Thread.Sleep(1000); 
      try{ 
       try 
       { 
       pipeproxy.isAlive(); 
       } 
       catch (CommunicationObjectFaultedException) 
       { 
       pipeproxy = pipeFactory.CreateChannel(); 
       } 
      }     
      catch (EndpointNotFoundException) 
      { 

       //Show notification 
        stopThread=true; 
      } 
      catch{} 
     } 
    //Close Application 

는 놀랍게도 내가 채널을 만들 수 있습니다, 그래서 난이 올바른 접근 방식인지 아닌지 확실하지 않다 :

현재이는 다음과 같습니다.

미리 감사드립니다.

+1

'pipeFactory'에서 참조 된 서비스가 사용 가능하다면, 그것으로부터 새로운 채널을 생성 할 수 있습니다. 프록시는 서비스와 독립적으로 폴트 될 수 있습니다. – Tim

+0

그래서 isAlive 검사를 수행하는 적절한 방법은 무엇입니까? –

+0

살아 있는지 확인해야하는 이유는 무엇입니까? ServiceHost에 오류 상태를 등록하십시오. 나는 그것이 관리되는 응용 프로그램에서 호스트되고 있다고 가정하고, 모든 서비스 호출이 try/catch와 함께 있는지 확인하고 catch에 던지지 말고 오류 계약서를 다시 보냅니다. – ilansch

답변

2

CreateChannel이 서비스에 연결하지 않으면 전화를 걸 때만 발생합니다.

관련 문제