2010-12-26 7 views
0
public static void StartService() 
    { 
     Hashtable t = new Hashtable(); 
     t["port"] = portnumber; 
     t["name"] = "somechannel"; 

     channel= new TcpChannel(t, null, null); 

     ChannelServices.RegisterChannel(channel, false); 
     RemotingConfiguration.RegisterWellKnownServiceType(typeof(someRemoteObject), "somedomain", WellKnownObjectMode.SingleCall); 
    } 

    public static void StopService() 
    { 
     //what should I do ?? 
    } 

buttonStart_Click는 : StartService()
buttonStop_Click 호출 StopService()정지 .NET 원격

그것은 buttonStart를 클릭하면 두 번 "각 소켓 주소 (프로토콜/네트워크 주소/포트)는 하나만 사용을 만드는 것이 명백는 일반적으로 허용되는 호출 "예외.

질문은 응용 프로그램을 종료하지 않고 원격 통화에 응답하지 않는 방법입니다.

+3

을보십시오. 그렇다면 Remoting을 삭제하고 WCF를 탐구하는 것이 좋습니다. –

+0

원격 시작 및 중지 및 다시 시작 기능은 무엇입니까? 왜 응용 프로그램의 수명 동안 연결을 만들고 단지 하나의 연결을 사용합니까? –

+0

.Net Remoting은 서비스를 통신 할 수있는 손쉬운 방법이며 WCF가 실제로 자신의 문제에 대한 더 나은 솔루션 인 경우 달성하려는 목표에 따라 달라집니다. – tobsen

답변

2

처음 buttonStart_Click을 호출 할 때 플래그를 설정하고 플래그가 설정된 경우에는 원격 작업을 건너 뛰는 것이 어떻습니까?

+0

존 손 더스 (John Saunders)의 답변 외에도 채널이 이미 등록되어 있는지 확인할 수 있습니다. http://msdn.microsoft.com/en-us/library/system.runtime.remoting.channels.channelservices.getchannel(v=VS.90).aspx – tobsen

1

는 새로운 코드를 작성하는 것처럼이 보이는

ChannelServices.UnregisterChannel(channel);