Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: TParallel abbrechen

  Alt 23. Sep 2014, 08:24
Mit der Überladung, die beim AIteratorEvent die version mit dem TLoopState übergeben bekommt, kannst du die Schleife abbrechen.
Solltest aber trotzdem innerhalb des Events den übergebenen LoopState überprüfen, denn das Ding läuft auch nach dem abbrechen noch ein bisschen nach.

Also so in etwa:

Delphi-Quellcode:
TParallel.For(1, 100,
  procedure(i: Integer; ls: TParallel.TLoopState)
  begin
    if not ls.Stopped then
    begin
      MachWas;
      if SollAnhalten then
        ls.Stop;
    end;
  end);
Die Möglichkeit, nen CancellationToken zu übergeben wie in .Net wäre sicherlich die schönere Lösung gewesen, aber nunja

Dessenungeachtet kann man eine normale For/Foreach-Schleife auch nicht abbrechen.
Häh? Schonmal was von Break gehört?

Ganz naives Beispiel: mit dem TParallel irgendwas in Dateien suchen und die Dateiliste hab ich schon (bitte keine Diskussion, ob man das anders lösen könnte). Und es gibt in der UI einen Abbrechen Knopf. Tjo, nun sollte man wohl das Dingen abbrechen können oder?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (23. Sep 2014 um 08:29 Uhr)
  Mit Zitat antworten Zitat