약 2 주 동안 여기에 붙어 있습니다. 그래서 누군가가 콜백 객체에 의해 한 번에 하나의 콜백 만 처리 될 수 있다는 WCF의 제한 사항이 있습니까? 나는이 문제를 해결하려고 시도 할 때 찾을 수있는 모든 것을 시도했지만 여전히 어떤 자리도 얻을 수 없다.한 번에 하나의 콜백 만 - WCF 제한?
매우 간단한 응용 프로그램을 만들었습니다. 클라이언트가 서비스를 호출하면 서비스는 동시에 클라이언트에 두 가지 콜백을 생성합니다. 콜백 A는 반환하는 데 오랜 시간이 걸립니다. 콜백 B는 A가 처리 중일 때도 반복적으로 루프를 호출합니다. 문제는 A가 처리 중일 때 B가 통과하지 못한다는 것입니다. 그러나 A가 반환 되 자마자 B가 곧 처리됩니다.
시도한 내용은 다음과 같습니다. 1. 클라이언트와 서비스 모두에서 ConcurrencyMode를 복수 또는 재진입으로 설정하십시오. 2. 클라이언트와 서비스 모두에서 UseSynchronizationContext를 False로 설정합니다. 3. 클라이언트의 작업자 스레드에서 서비스 호출을 시작합니다. 4. 클라이언트의 작업자 스레드에 프록시 (서비스 채널)를 만듭니다. 5. 서비스의 자체 작업자 스레드에서 두 콜백을 모두 시작하십시오. 6. 둘 다 콜백을 한쪽으로 지정하십시오.
이러한 문제는 해결되지 않았습니다. 지금 내가 생각할 수있는 유일한 점은 이것이 WCF의 한계 일 수 있다는 것입니다. 누군가가 이것에 대해 밝힐 수 있다면 크게 감사하겠습니다.
감사합니다. Brice2Paris! 콜백 B는 상태 검사기이므로 실시간으로 실행해야합니다. 비동기 콜백이 내 요구를 충족시키지 못합니다. 문제를 일으키는 목적을 위해, 나는 그것이 노력할 가치가있는 무엇인가 생각한다. 사실, 나는 OneWay 콜백 둘 모두를 시도했다. OneWay 호출이 비동기 호출과 동일하지는 않지만 일부 측면에서는 비슷합니다. OneWay를 사용할 때 서비스는 콜백을 계속해서 보냅니다.하지만 콜백은 모두 어딘가에 대기합니다. 콜백 A가 반환되기 전에 클라이언트가 콜백을받지 못하고 A가 반환되면 모든 콜백이 즉시 실행됩니다. – user2434400