【发布时间】:2017-02-05 18:53:32
【问题描述】:
我有一个 WPF 应用程序,我想在许多线程上将项目添加到列表框。 当我做这样的事情时
listBox.Items.Clear();
var lastgames = db.GameResults.OrderByDescending(c => c.DataGry).ToList();
Parallel.ForEach(lastgames, game =>
{
listBox.Items.Add(game.score);
});
显然会抛出异常
调用线程无法访问此对象,因为另一个线程拥有它。
我听说过 WPF 中的后台工作人员,但我不知道如何使用它。
【问题讨论】:
-
要处理长操作或导致 UI 被锁定的操作,您需要使用
ThreadPool和Dispatcher.Invoke。示例:stackoverflow.com/questions/36521365/… -
@S.Akbari ive 使用了您的代码并将 parallel.foreach 替换为正常的 foreach 是我应该做的吗?
标签: c# wpf multithreading listbox