Laden...

Asynchrones Aufrufen von Vorgängen mit einer Kanalfactory

Erstellt von Runshak vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.168 Views
R
Runshak Themenstarter:in
71 Beiträge seit 2014
vor 9 Jahren
Asynchrones Aufrufen von Vorgängen mit einer Kanalfactory

Wie ihr vllt wisst, habe ich ein Program mit WCF und basicHttpBinding...ich glaube auch, dass ich alle Tipps/Vorschläge von @Abt umsetzen habe können bzw halbwegs verstanden habe...

Das Program läuft allerdings synchron...ich würde es aber gerne asynchron laufen lassen...jetzt habe ich Vorgehensweise: Asynchrones Aufrufen von Vorgängen mit einer Kanalfactory gefunden (siehe Überschrift) ...allerdings tun sich hierbei eine Menge Fragen auf, die ihr vllt beantworten könnt...

Dienstvertrag:

  [OperationContract(AsyncPattern = true)]
    IAsyncResult BeginMultiply(double n1, double n2, AsyncCallback callback, object state);
    double EndMultiply(IAsyncResult ar);

Das BeginMultiply und das EndMultiply muss ich ja beides "füllen"...

in einer anderen Klasse, die von dem Interface mit dem Dienstvertrag erbt muss ich ja diese beiden Methoden behandeln...ich habe bei mir eine Funktion, die Primzahlen berechnet...diese Funktion habe ich in die BeginMultiply-Methode gepackt...und was muss in der EndMultiply-Methode stehen?

und dann gibt es noch

static void AddCallback(IAsyncResult ar)
{
    double result = ((CalculatorClient)ar.AsyncState).EndAdd(ar);
    Console.WriteLine("Add Result: {0}", result);
}

...kommt das zum Client oder zum Server?

Wenn jemand mir das Erklären könnte, vllt auch ein Beispiel hätte, oder einfach nur Tipps... ich wäre euch wirklich dankbar

6.911 Beiträge seit 2009
vor 9 Jahren

Hallo Runshak,

verwendest du .net 4.5? Dann geht das über den Task-basierten Ansatz viel einfacher. Siehe Synchronous and Asynchronous Operations Abschnitt "Task-Based Asynchronous Pattern".

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"