Wie kann ich einen BackgroundWorker-Prozess ordnungsgemäß abbrechen und neu starten?

9

Benutzer meiner Anwendung geben HTML in ein TextBox-Steuerelement ein.

Ich möchte, dass meine Anwendung ihre Eingaben im Hintergrund validiert.

Da ich den Validierungsdienst nicht hämmern möchte, habe ich versucht, vor jeder Validierung eine Verzögerung von einer Sekunde einzubauen.

Ich bin jedoch nicht in der Lage, einen bereits laufenden BackgroundWorker-Prozess korrekt zu unterbrechen.

Mein Visual Basic-Code:

%Vor%

Nach dem Aufruf von CancelAsync () meines BackgroundWorker scheint IsBusy niemals False zu werden. Es bleibt in einer Endlosschleife stecken.

Was mache ich falsch?

    
Zack Peterson 11.03.2009, 15:51
quelle

3 Antworten

8

Versuchen Sie etwas wie folgt:

%Vor%     
Egon 27.05.2009 13:10
quelle
1

Sie müssen in Ihrer Prozessroutine für Hintergrund-Worker nach backgroundWorkerPageProcess.CancellationPending suchen. und gehen Sie entsprechend aus. Dann, sobald es Ihre while-Schleife gibt, sollte isBusy entsprechend markiert werden.

Update: Nachdem Sie Cancel = true gesetzt haben, kehren Sie aus der Methode zurück? hier spucken Update 2: Sie haben das WorkerSupportsCancellation Flag auf dem Hintergrundarbeiter auf True festgelegt? Auch in Worker Completed-Methode zurückgegeben, wenn e.Cancelled .... mehr spitballs

Update 3: nach ein paar Überprüfungen und Kompilationen scheint mir das verdammte Ding innerhalb der gleichen Methode nie wieder aus dem Busen herauszukommen. - Eine Option besteht darin, die Taste bei Besetzt zu deaktivieren und eine andere zu deaktivieren, nur damit der Benutzer die Überprüfung zurückklickt. -Oder auf Ihrer Arbeitskraft abgeschlossene Methode, wenn (e.Cancelled) Ihre Validierungsmethode mit geeignetem Text aufruft ....

Wie auch immer, ist eine Art Büste. Tut mir leid, hier nicht viel zu helfen.

    
Pat 11.03.2009 15:58
quelle
0

Ich habe die Antwort in diesem Artikel gefunden:

BackgroundWorker Closure und Overridable Task von Patrick Smacchia

Ich habe seinen Code angepasst:

%Vor%     
Zack Peterson 11.03.2009 15:55
quelle