我有一个 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 实时更新并在继续之前等待线程池的执行时,您推荐什么方法。