Esse uso do thread Parallel.ForEach () é seguro?

Essencialmente, estou trabalhando com isso:

var data = input.AsParallel();
List<String> output = new List<String>();

Parallel.ForEach<String>(data, line => {
    String outputLine = ""; 
    // ** Do something with "line" and store result in "outputLine" **

    // Additionally, there are some this.Invoke statements for updating UI

    output.Add(outputLine);
});

Input é umList<String> objeto. OForEach() instrução @ faz algum processamento em cada valor, atualiza a interface do usuário e adiciona o resultado aooutput List. Existe algo inerentemente errado nisso?

Notas

O pedido de saída ésem importânci

Atualizar

Com base nos comentários que recebi, adicionei um manuallock aooutput.Add, bem como para o código de atualização da interface do usuári

questionAnswers(3)

yourAnswerToTheQuestion