等待Parallel.For

abe*_*nci 3 .net c# task-parallel-library

我知道没有必要等待,Parallel.For但是因为在Parallel.For我想等待Parallel.For完成期间正在处理 UI Windows 消息(WinForms 消息泵)。

将 a 封装在 aParallel.ForTask,然后等待它是个好主意吗?有没有更好的办法?

谢谢。

CancellationTokenSource token = new CancellationTokenSource();

const int len = 100;

double[] array = new double[len];

Task t = Task.Factory.StartNew(delegate {
   Parallel.For(0, len, delegate(int i, ParallelLoopState loopState) {

   array[i] += 1;

   });

try
{
   t.Wait(token.Token);
}
catch (OperationCanceledException e)
{
   rc = false;
}
Run Code Online (Sandbox Code Playgroud)

May*_*ank 5

而不是Parallel.For为什么不使用 justTask和 call Task.WaitAll()

var t1 = Task.Run(() => {});
var t2 = Task.Run(() => {});

Task.WaitAll(t1, t2);
Run Code Online (Sandbox Code Playgroud)

  • 这与 Parallel.For() 的作用不同——它不会在多个线程之间自动拆分处理集合的元素。 (3认同)
  • 这并不能回答问题 (2认同)