在Parallel.ForEach中更新WPF GUi

时间:2013-01-06 17:55:14

标签: c# .net wpf multithreading parallel-processing

我有一个WPF多线程应用程序,每个线程更新绑定到xaml gui的对象的一些变量。

如果我使用普通线程或线程池,它可以正常工作。当目标变量被踏板改变时,每个对象都在GUI中实时更新。

我想使用Parallel.ForEach,因为它会停止执行所有线程的完成。这对我来说非常重要,因为阻止界面(因为使用应该等待),并且可以显示已完成的消息。糟糕的是,Parallel.Foreach并没有实时更新,只有当所有线程都完成时才会更新。

这种方式有效,但它只会在最后更新Gui。

Parallel.ForEach(Computers, new ParallelOptions { MaxDegreeOfParallelism = 1}, computer => { PingTemp(computer); });

这种方式有效,但它不会等到ThreadPool的结尾。

Task.Factory.StartNew(() => Parallel.ForEach<Computer>(Computers, new ParallelOptions { MaxDegreeOfParallelism = 1 }, computer => PingTemp(computer)));

当GUI实时更新并等待执行threadpool之前,您建议采用什么方法。

0 个答案:

没有答案
相关问题