많은 양의 데이터를 캐시하는 싱글 톤 WCF 서비스를 호스팅하는 Windows 서비스가 있습니다. Windows 서비스의 시작 업에 나는 뭐하는 거지 다음WCF "Fire and Forget"메서드로 인해 호스트 실행이 예상대로 계속되지 않습니다.
// start client service
wcfService= new ServiceHost(typeof(MyWcfService));
wcfService.Open();
using (HostedServiceReference.WcfServiceProxy wcfServiceProxy = new HostedServiceReference.WcfClientServiceProxy())
{
wcfServiceProxy.RefreshDisplayCacheFromSource();
// 1st echo to console
Console.WriteLine("Display Cache Refreshed"));
}
// 2nd echo to console
Console.WriteLine("Begin other processing"))
및 서비스 계약에 다음과 같이 나는 방법을 설정 한 : 내가 바로 1, 2를 볼 것으로 예상했다
[OperationContract(IsOneWay=true)]
void RefreshDisplayCacheFromSource();
콘솔에 표시되는 에코가 있지만 실제로 볼 수있는 것은 첫 번째 에코입니다. 제 2 행은 "fire and forget"방법이 오랜 작업을 완료 할 때까지 표시되지 않습니다.
배경에서 무슨 일이 일어나는지 설명 할 수 있습니까?
내 이론이 지금까지 :
는 호스팅 서비스를 차단 싱글 모드에서 WCF 서비스의 작동인가?
사용하는 문장과 관련이 있습니까?
이 게시물에 언급 된 것과 관련이있을 수 있습니다. [링크] (http://stackoverflow.com/questions/2176018/wcf-asyncpattern-true-orison-your-your-true) _ "IsOneWay가 스레드를 잠급니다. 유일한 차이점은 서버 측에서 전체 작업이 완료 될 때까지 기다리지 않는다는 것입니다. 서버 측에서 전체 메시지를 수신했음을 확인할 때까지 기다립니다. "_ – Franchesca