WCF-client-Deadlocks aufgrund callback-auch wenn callback IsOneWay

neuen WCF.

Ich habe einen client, der Deadlocks beim Aufruf einer WCF-Dienst.

Den service aufrufen, die einen Rückruf an den client an der Uhrzeit des Anrufs, die gekennzeichnet ist als IsOneWay. Ich habe bestätigt, dass der Dienst nicht blockiert, auf den Rückruf.

Client ruft sofort den gleichen service wieder (in einer engen Schleife), ohne doch den Rückruf gewartet. Der client wird dann von deadlocks (und einen Haltepunkt auf der service-Seite wird nie ausgelöst).

So zur Erinnerung:

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)

Gehe ich davon aus, dass der Rückruf hat packte einige WCF-Sperre auf der client-Seite, und dann die zweite service-Aufruf von der client-will auch, dass sperren, so deadlock Ergebnisse. Aber das ist nur Vermutung.

Ich gelesen habe ConcurrencyMode aber ich kann mich nicht entscheiden, welcher Modus zu verwenden ist, oder wo es, da bin ich mir nicht 100% klar, was Los ist, und was blockiert wird, genau.

Ich würde auch lieber halten Sie alle Rückrufe, die verarbeitet werden, indem die dispatch-thread wenn möglich, wie es hält den code einfacher.

Kann ein WCF-Experten ein Licht auf genau das, was ist hier Los?

Vielen Dank

  • Können Sie zeigen Sie uns den code?
  • Kaum Wert, es gibt nichts zu es. Es ist eher ein problem von mir zu verstehen, wie WCF befasst sich mit und synchronisiert Rückrufe.
  • Welche Art der client-Anwendung haben Sie? Sind sowohl client-als auch call-und callback-Wege, oder einer von Ihnen mit der Antwort?
Schreibe einen Kommentar