我可以在Parallel.ForEach中设置Thread.CurrentThread.Name吗?

时间:2018-04-04 14:05:21

标签: c# multithreading task-parallel-library

我正在使用以下C#代码来处理请求。

Parallel.ForEach(reqs, parallelOptions, req => ProcesRequest(req));

Inside ProcesRequest方法可以设置线程名称。请参阅以下代码:

Thread.CurrentThread.Name = "Some name with " + i;

请建议上面的代码是否会给出一致的帖子名称。

编写此类代码是否可以。它会影响何时创建大量线程吗?

内部是否有重复使用的线程?

1 个答案:

答案 0 :(得分:0)

最好的方法是使用 Thread.CurrentThread.ManagedThreadId

ParallelOptions pOpt = new ParallelOptions()
{
    MaxDegreeOfParallelism = 10
};

Parallel.ForEach(reqs, pOpt, req=> {
    string thName = "Thread#"  + Thread.CurrentThread.ManagedThreadId;
    Console.WriteLine(thName);
});