我有一个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之前,您建议采用什么方法。