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)
你为什么要开始一个线程然后立即加入呢?
我通常会这样做:
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)
| 归档时间: |
|
| 查看次数: |
635 次 |
| 最近记录: |