2011-01-17 3 views
4

WCF 서비스를 제공하는 Winforms 응용 프로그램이 있습니다.Winforms 앱의 WCF - 항상 단일 스레드입니까?

IIS에서 서비스를 사용하려고합니다. 2 대의 컴퓨터에서 나는 test1.aspx으로 전화를 걸어서 Winforms 앱 내부에서 WCF를 호출합니다.

test1.aspx => from computer 1 => First Call 
test1.aspx => from computer 2 => Second Call 

가 나는 CALL이 프로세스 CALL에 완료 할 필요가 2를 처리하기 위해 시작되기 전에 WCF는 단일 스레드이며, 볼 1

[ServiceBehavior(IncludeExceptionDetailInFaults = true, 
       ConcurrencyMode=ConcurrencyMode.Multiple, 
       InstanceContextMode=InstanceContextMode.PerSession)] 

나는 윈도우 서버 2008 R2가 7.5을 IIS

아무도 도와 줄 수 있습니까?

+1

어떻게 당신이 윈폼 응용 프로그램 내부에 WCF 서비스를 호스팅을 ?? 방법에 따라 싱글 톤 또는 싱글 스레드 서비스가 될 수도 있습니다. –

답변

10

UI 스레드에서 서비스가 호스팅 될 때 WCF의 동작이 다를 수 있습니다. 기본적으로 WCF 처리는 Windows 메시지 루프를 결합하여 요청 처리가 직렬이 될뿐만 아니라 WinForms UI에서 모든 이벤트 처리를 중단합니다 (응용 프로그램이 고정됩니다).

당신이 명시 적으로 UI 스레드에서 서비스를 호스팅 싶지 않아 말을해야이 문제를 방지하려면 :

[ServiceBehavior(UseSynchronizationContext = false)] 
+0

이것은 해결책입니다 : – darez

+0

내 생명을 구했어 !!! –

관련 문제