如果从Parallel.ForEach中创建任务,那么任务在哪个线程上运行



如果任务是在与"main"线程不同的线程上创建的,我不确定任务在哪个线程上运行。如果在主线程上等待,则意味着它也在主线程中启动?

var work = new ConcurrentBag<Task>();
Parallel.ForEach(myList, (myItem, _, index) =>
{
var result = multiThreadFunc(myItem);
work.Add(singleThreadFuncAsync(myItem, result, index));
});
Task.WaitAll(work.ToArray(), ct);

任务应该在线程池中的后端线程上运行,而不是在主线程上运行。

要查看运行状态,可以在visualstudio中调试项目,并在task方法中设置断点。调试时,您可以打开线程窗口(Debug->Windows->Threads(并在其中查找状态。

最新更新