Ja, da gibt es doch ein Break (mir war doch auch so
)
Delphi-Quellcode:
procedure Foo;
var
LValue: Integer;
begin
LValue := 0;
TParallel.&For( 1, 1000,
procedure( L: Integer; S: TParallel.TLoopState )
begin
if not S.ShouldExit
then
begin
Inc( LValue );
if L = 500
then
S.Break;
end;
end );
Writeln( LValue );
end;
Da wird auf jeden Fall früher abgebrochen, allerdings laufen ein paar Tasks noch durch die Schleife. Sieht man schön, wenn man das ausführt
Delphi-Quellcode:
procedure Foo;
var
LValue: Integer;
begin
LValue := 0;
TParallel.&For( 1, 1000,
procedure( L: Integer; S: TParallel.TLoopState )
begin
// if not S.ShouldExit
// then
// begin
Inc( LValue );
if L = 500
then
S.Break;
// end;
end );
Writeln( LValue );
end;
Bei mir kommt dann regelmäßig
529 heraus.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)