Por que o encadeamento principal da OmniThreadLibrary ForEach está bloqueando?

Usando o OmniThreadLibrary eo Delphi XE4, espero executar vários threads que processam dados em segundo plano, adicionando aumento de velocidade ao meu código já existente.

Ao chamar o procedimento abaixo, a GUI do aplicativo para de processar qualquer entrada até que todos os encadeamentos sejam concluídos. Eu entendo que usar.NoWait deve permitir que o procedimento seja encerrado mesmo quando os encadeamentos estiverem em execução.

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;

Meu entendimento do loop ForEach é incorreto, sugerindo que eu use um método alternativo para obter o processamento em segundo plano? Qualquer sugestão sobre o uso correto da OmniThreadLibrary é apreciada.

questionAnswers(1)

yourAnswerToTheQuestion