2010-06-23 5 views
3

.NET 리모컨은 내 brownfield 응용 프로그램에서 사용됩니다. 우리는 우리의 원격 메소드에 대한 타임 아웃을 설정하기로 결정했습니다.리모팅 설정 시간 제한

System.Collections.IDictionary properties = new System.Collections.Hashtable(); 
properties["name"] = Ipc_Channel_Name; 
properties["timeout"] = 1 * 1000; 

IChannel clientChannel = new IpcClientChannel(properties, null); 
ChannelServices.RegisterChannel(clientChannel, false); 

문제는 타임 아웃이 작동하지 않는 것입니다. 호출 된 코드에 System.Threading.Thread.Sleep(5 * 1000);을 설정하여 확인했습니다. IpcClientChannel이 시간 초과를 지원하지 않는 이유는 무엇입니까?

어떻게 타임 아웃을 설정합니까?

+0

아이디어가 있으십니까? 질문은 여전히 ​​실제입니다. –

답변

4

IpcClientChannel의 시간 제한을 설정하는 속성의 이름이 "시간 초과"가 아닙니다. 이름은 "connectionTimeout"입니다. Client Channel Properties (MSDN)을 참조하십시오. 그렇다면 그것이 작동합니다.

System.Collections.IDictionary properties = new System.Collections.Hashtable(); 
properties["name"] = Ipc_Channel_Name; 
properties["connectionTimeout"] = 1 * 1000; 

IChannel clientChannel = new IpcClientChannel(properties, null); 
ChannelServices.RegisterChannel(clientChannel, false); 
+0

안녕하세요, Jehof. 대답 해줘서 고마워. MSDN에서 : "connectiontimeout은 성공적인 연결을 기다리는 밀리 초 수를 지정하는 정수입니다 .0 또는 -1은 무한 타임 아웃 기간을 나타내며 기본값은 무한입니다." connectiontimeout을 1 * 1000으로 설정하고 System.Threading.Thread.Sleep (5 * 1000)을 설정하면; 호출 된 코드에서 예외가 발생하지 않습니다. 5 초를 기다립니다. 클라이언트의 코드를 수정하여이 문제를 해결했습니다. –

+0

@MegaHerz 미안하지만, 나는 이해하지 못한다. connectiontimeout을 1000ms로 설정하고 서버가 5000ms> 1000ms 동안 잠자기합니다. 그것은 확실히 시간을 초과합니다. 왜 예외는 안되니? 그게 벌레 야? – Gqqnbig