WebService auf dem Server abbrechen

16/12/2008 - 21:47 von Thomas Sparenberg | Report spam
Hallo!

Ich habe eine Funktion, welche eine Berechnung durchführt. Diese Berechnung
kann sehr lange dauern. Nun habe ich diese Funktion in einem Web-Service zur
Verfügung gestellt.
In meiner Windows-Client-Anwendung rufe ich die Funktion asynchron auf. Die
Anwendung bleibt somit bedienbar.

Wie kann ich jetzt eine Anfrage bzw. die Berechnung auf den Server
abbrechen, wenn der Bediener z.B. eine Abbruchtaste betàtigt?

Die Methode CancelAsync bricht die Anfrage zwar ab, der Server scheint die
Berechnung jedoch bis zum BITTEREN Ende auszuführen.

Thomas
 

Lesen sie die antworten

#1 TA
18/12/2008 - 14:58 | Warnen spam
"Thomas Sparenberg" schrieb im
Newsbeitrag news:
Hallo!

Ich habe eine Funktion, welche eine Berechnung durchführt. Diese
Berechnung
kann sehr lange dauern. Nun habe ich diese Funktion in einem Web-Service
zur
Verfügung gestellt.
In meiner Windows-Client-Anwendung rufe ich die Funktion asynchron auf.
Die
Anwendung bleibt somit bedienbar.

Wie kann ich jetzt eine Anfrage bzw. die Berechnung auf den Server
abbrechen, wenn der Bediener z.B. eine Abbruchtaste betàtigt?

Die Methode CancelAsync bricht die Anfrage zwar ab, der Server scheint die
Berechnung jedoch bis zum BITTEREN Ende auszuführen.

Thomas



Hallo Thomas,

als Gurndidee könnte ich mir folgenden Weg vorstellen:

Baue in eine Methode ein bool-Flag ein und starte deine Berechnungmethode
mit dieser:

while (bool-Flag )
{
}

Da sich ein Thread beendet wenn seine Methode beendet wird kannst du dann
durch einfaches setzen dieses Flags deine Methode zur Berechnung zum
beliebigen Zeitpunkt beenden und damit auch den Thread der diese Methode
ausführt

Du kannst also eine zweite WebService-Methode "CancelCalculation" bereit
stellen die dann dieses bool-Flag auf false setzt (beim Starten musst du
dieses natürlich auf true setzen). Ggf. musst du dir dafür eine
WorkerThread-Klasse schreiben die sowohl das bool-Flag als auch die Run()
und Cancel() Methode enthàlt und damit deine Methode bedient.

Grüße,
Tobias

Ähnliche fragen