多参数化线程效率

nig*_*dev 2 .net parameters multithreading

是否有更优雅的方式编写以下语法?

        Thread t0 = new Thread(new ParameterizedThreadStart(doWork));
        t0.Start('someVal');
        t0.Join();

        Thread t1 = new Thread(new ParameterizedThreadStart(doWork));
        t1.Start('someDiffVal');
        t1.Join();
Run Code Online (Sandbox Code Playgroud)

假设我们想要传递20个不同的值,设置它的最佳方法是什么?在最后循环并加入?

如果未实例化新线程(如下所示),则无法重新启动线程.例如:

        Thread t1 = new Thread(new ParameterizedThreadStart(doWork));
        t1.Start('someVal');
        t1.Start('someDiffVal');
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

你为什么要开始一个线程然后立即加入呢?

我通常会这样做:

List<Thread> threads = new List<Thread>();

foreach (string item in items)
{
    string copy = item; // Important due to variable capture
    ThreadStart ts = () => DoWork(copy); // Strongly typed :)
    Thread t = new Thread(ts);
    t.Start();
    threads.Add(t);
}

foreach (Thread t in threads)
{
    t.Join();
}
Run Code Online (Sandbox Code Playgroud)