Почему OmniThreadLibrary ForEach блокирует основной поток?

Используя OmniThreadLibrary и Delphi XE4, я надеюсь запустить несколько потоков, которые обрабатывают данные в фоновом режиме, добавляя скорость к моему уже существующему коду.

При вызове процедуры, приведенной ниже, графический интерфейс приложения останавливает обработку любого ввода, пока все потоки не завершатся. Я понимаю, что с помощью.NoWait должно позволить процедуре завершиться, даже когда потоки работают.

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;

Является ли мое понимание цикла ForEach неверным, предполагая, что я должен использовать альтернативный метод для выполнения фоновой обработки? Любые предложения по правильному использованию OmniThreadLibrary приветствуются.

Ответы на вопрос(1)

Ваш ответ на вопрос