es nueva en WCF.Bloqueo del cliente WCF debido a una devolución de llamada incluso cuando la devolución de llamada IsOneWay
Tengo un cliente que está bloqueado cuando se llama a un servicio WCF.
El servicio invocará una devolución de llamada al cliente en el momento de la llamada marcada como IsOneWay. Confirmé que el servicio no está bloqueando en la devolución de llamada.
El cliente vuelve a llamar inmediatamente al mismo servicio (en un circuito cerrado), sin haber reparado la devolución de llamada. Luego, el cliente se bloquea (y un punto de interrupción en el lado del servicio nunca se activa).
Así que para recapitular:
CLIENT SERVICE
Call service -----------------------> (service breakpoint triggers)
(waiting for dispatch thread) <------ Invoke callback (IsOneWay - doesn't block)
Service returns
Call service again immediately -----? (service breakpoint doesn't trigger)
(deadlock)
Estoy asumiendo que la devolución de llamada ha agarrado un poco de bloqueo WCF en el extremo del cliente, y luego la segunda llamada de servicio por parte del cliente también quiere que la cerradura, por lo DeadLock resultados. Pero esto es solo una suposición.
He leído acerca de ConcurrencyMode pero no puedo decidir qué modo usar o dónde ubicarlo porque no tengo 100% claro qué está pasando y qué está bloqueado exactamente.
También preferiría mantener todas las devoluciones de llamadas a ser atendidas por el hilo de envío si es posible, ya que mantiene el código más simple.
¿Pueden los expertos de WCF arrojar luz sobre exactamente lo que está sucediendo aquí?
Muchas gracias
¿Puede mostrarnos el código? –
No vale la pena, no hay nada. Es más un problema para mí entender cómo WCF trata y sincroniza devoluciones de llamada. – GazTheDestroyer
¿Qué tipo de aplicación de cliente tienes? ¿Son ambas llamadas de cliente y de devolución de llamada de una manera o es alguno de ellos con respuesta? –