Przekaż każdy element listy do nowego wątku jeden po drugim [duplikat]

To pytanie ma już tutaj odpowiedź:

Przechwycona zmienna w pętli w C # 8 odpowiedzi

To, co staram się zrobić, jest bardzo proste,
Skanuję listę ciągów, a następnie przekazuję każdy ciąg do nowego wątku w celu wydrukowania.

using System;
using System.Collections.Generic;
using System.Threading;

namespace MultithreadingSynchronization
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> stringList = new List<string> { "server1", "server2", "server3", "server4", "server5", "server6", "server7", "server8", "server9"};

            foreach (string server in stringList)
            {
                ThreadStart work = delegate { Threadjob(server); };
                new Thread(work).Start();
                //Thread.Sleep(10); // 10 ms delay of main thread
            }
        }

        public static void Threadjob(object server)
        {
            Console.WriteLine(server);
        }
    }
}

Z jakiegoś powodu istnieją wątki, które otrzymały niewłaściwą wartość, dlatego wyjście prezentuje kilka zduplikowanych łańcuchów, a także brakuje niektórych ciągów.
Spodziewam się tego wyjścia (kolejność nie jest ważna):

server1
server2
server3
server4
server5
server6
server7
server8
server9

Ale czasami to rozumiem:

server3
server2
server5
server5
server7
server4
server8
server9
server9

a czasem to rozumiem:

server2
server2
server4
server3
server6
server7
server7
server8
server9

itp.

rzeczywiście, jeśli po każdym utworzeniu wątku spóźnię się, otrzymam to, czego oczekuję.

Dowolny pomysł?

questionAnswers(3)

yourAnswerToTheQuestion