2014-04-14 2 views
0

일부 COM 개체를 실행하는 non-singleton WCF (독립 실행 형) 서비스가 있습니다. 비 -WCF 환경에서 Thread.Start를 사용하면 이러한 COM 객체가 다른 스레드에서 병렬로 실행되어 모든 CPU를 활용하고 동시에 완료 할 수 있습니다.ThreadingModel 무료 WCF 서비스가 작동하지 않습니다.

그러나 특정 WCF 서비스에서 사용하려고하면 이상한 점이 있습니다. 레지스트리에 ApartmentState로 설정하면

는, WCF는 작동하지만 작업은 서로의 완료를 기다리지, 시리얼 것으로 보인다. CPU 사용량은 CPU 1 개를 결코 초과하지 않습니다. 그것은 STA에서 실행되도록 강제됩니다.

레지스트리에있는 경우 아파트 상태무료으로 설정되면 충돌합니다.

나는 그것을 얻지 못한다. 이런 종류의 배관 공사가 방해 받고 있습니까?

내 WCF 서비스 클래스 다음과 같은 속성이 있습니다

[인 ServiceBehavior (AddressFilterMode = AddressFilterMode.Any, InstanceContextMode = InstanceContextMode.PerCall, 들면, ConcurrencyMode = ConcurrencyMode.Single)]

COM 개체가 글로벌/정적 .

답변

0

나는 대답을 가지고있을 것 같습니다. 다른 사람이 비슷한 신비를 접할 경우를 대비 한 게시. 이전 버전은 STA 전용이며 Interop은 포함되도록 설정되었습니다. 또한 메소드의 프로토 타입이 변경되었습니다. 임베디드 Interop에서 가져온 부품이 COM 자체와 충돌 한 것 같습니다.

설정을 아니오로 변경하고 모든 것을 다시 컴파일하면 정상이됩니다.

관련 문제