这是我在取自 ThreadPool 的单独线程中将项目添加到 ObservableCollection 的方法。
我们知道它会引发异常:
This type of CollectionView does not support changes to its SourceCollection from a thread different from the Dispatcher thread.
我知道这个主题在这里很受欢迎,但我还没有找到任何适合下面代码中描述的情况的解决方案:
namespace WpfApplication1
{
class Item
{
public string name
{
get;
set;
}
}
class Container
{
public ObservableCollection<Item> internalList = new ObservableCollection<Item>();
}
public partial class MainWindow : Window
{
Container container = new Container();
void addItems()
{
Item item = new Item() { name = "jack" };
container.internalList.Add(item);
}
public MainWindow()
{
InitializeComponent();
ThreadPool.QueueUserWorkItem(delegate { this.addItems(); });
MyDataGrid.ItemsSource = container.internalList;
}
}
}
这个问题的最佳解决方案是什么?
谢谢!