Dlaczego główny wątek ForEach firmy OmniThreadLibrary jest blokujący?

Korzystając z OmniThreadLibrary i Delphi XE4, mam nadzieję uruchomić wiele wątków przetwarzających dane w tle, zwiększając szybkość mojego już istniejącego kodu.

Podczas wywoływania poniższej procedury interfejs GUI aplikacji przestaje przetwarzać dane wejściowe, dopóki wszystkie wątki nie zostaną zakończone. Moje zrozumienie jest takie.NoWait powinien pozwolić procedurze na wyjście, nawet gdy wątki są uruchomione.

procedure Test(input: TStringList; output: TList<TMaintFore>);
var
  outQueue: IOmniBlockingCollection;
  transaction: TOmniValue;
begin
  outQueue := TOmniBlockingCollection.Create;
  Parallel.ForEach(0, input.Count - 1)
    .NoWait
    .Into(outQueue)
    .Execute(
      procedure(const value: integer; var result: TOmniValue)
      begin
        result := TMaintFore.Create(input[value]);
      end
    );
end;

Czy moje rozumienie pętli ForEach jest niepoprawne, sugerując, że powinienem użyć alternatywnej metody do przetwarzania w tle? Wszelkie sugestie dotyczące prawidłowego korzystania z OmniThreadLibrary są mile widziane.

questionAnswers(1)

yourAnswerToTheQuestion