Hallo zusammen,
ich habe ein Problem und habe trotz Google keine Lösung gefunden. Hoffe nun, dass einige von euch mir helfen können.
Es existiert ein WPF-Client, der über einen WCF-Service mit dem Server kommuniziert.
Wenn ich beispielsweise in der GUI einen Service aufrufe wird in der Serviceimplementierung für diese Methode ein Callback ausgeführt.
Bsp: Ich rufe im Client die Methode XYZ auf. In der Methode wird ein Callback gefeuert mit einer Ausgabe "XYZ wurde aufgerufen".
Also: Insert -> Event Inserted
Wenn ich dies in einer Konsolenanwendung laufen lasse wird auch diese Reihenfolge eingehalten.
In der WPF-Anwendung blockiert der Callback jedoch.
Durch Rechereche habe ich rausgefunden, dass man bei der Callback-Implementierung das Attribut "UseSynchronizationContext" auf false setzen muss.
Jedoch wird dann ein asynchroner Aufruf gestartet und mein Callback kommt dann natürlich irgendwann beim Client an und nicht in der von mir im obigen Beispiel beschriebenen Reihenfolge.
Ich will aber die oben genannte Reihenfolge erreichen, ohne dass die GUI blockiert.
Gibt es eine Möglichkeit, die Callbacks synchron aufzurufen ohne mit UseSynchronizationContext = false zu arbeiten?
Danke bereits für eure Hilfe.
Verwende Begin und End Methoden deiner WCF Funktionen
Die musst du halt in der Client Konfiguration einschalten
Hallo TheGear,
danke für die Info.
Was meinst du genau mit den Begin und End Funktionen?
Die einzigen dieser Art die mir bekannt sind, sind bei der ChannelFactory BeginOpen. Aber da arbeite ich ja mit CreateChannel.
Hallo CSharperUser,
hier:
http://msdn.microsoft.com/en-us/library/ms734701.aspx
und da:
http://msdn.microsoft.com/en-us/library/ms731177.aspx
solltest du Antworten auf deine Fragen finden.
Gruesse,
Manullino
Hallo manullino,
danke für deine Antwort. Ich werde es mir entsprechend anschauen. Scheint denk ich genau mein Problem zu lösen.