Трябва да изляза от TParallel.For
цикъл по възможно най-бързия начин, когато потребителят щракне върху бутон Отказ или когато потребителят затвори/унищожи формуляра. Опитах и двете с TParallel.TLoopState.Stop
и TParallel.TLoopState.Break
:
var
BreakCondition: Boolean;
procedure TForm2.DoStartLoop;
begin
BreakCondition := False;
System.Threading.TParallel.For(1, 50,
procedure(idx: Integer; LS: TParallel.TLoopState)
begin
if BreakCondition then
begin
//LS.&BREAK;
LS.STOP;
//EXIT;
end
else
DoProcessValue(idx);
end);
end;
За съжаление документацията на Embarcadero за TParallel.TLoopState.Stop
и TParallel.TLoopState.Break
гласи само:
В момента Embarcadero Technologies не разполага с допълнителна информация.
Също така имам впечатлението, че цикълът не се прекъсва много бързо. Има ли по-добър начин?
TParallel.For
документация - person Remy Lebeau   schedule 04.05.2017DoProcessValue()
трябва редовно да проверява свойствотоStopped
. - person LU RD   schedule 04.05.2017TEvent
, когато потребителят анулира зададеното си за signaled и цикълът проверява това и излиза. Има толкова много, че в момента няма допълнителна информация.. струва си да следвате. - person FredS   schedule 05.05.2017