我正在使用继承IEnumerable的类来检索DataType
的集合。在另一个线程中填充ObservableCollection
class DataCollector : IEnumerable<DataType>
{
public IEnumerator<DataType> GetEnumerator()
{
// this takes from 5 to 20 seconds,
// so I want it to run in a background thread.
}
}
现在数据类型是只是一个名称和价值属性很简单。
在我的ViewModel:
private AsyncObservableCollection<DataType> _Data = new AsyncObservableCollection<DataType>();
我使用的是从hereAsyncObservableCollection
,所以我可以从BackgroundWorker的填充它。
在视图模型的构造函数创建一个BackgroundWorker,这是DoWork的:
void DoWork(object sender, DoWorkEventArgs e)
{
var data = new DataCollector();
foreach (var i in data)
{
_Data.Add(i);
}
}
我越来越Must create DependencySource on same Thread as the DependencyObject.
这是否意味着我需要创建我是从DataCollector.GetEnumerator产生的DataType
( )在UI线程?我怎样才能解决这个问题?
我试图让它在加载数据时更新UI。 – Josh
@Josh看我的编辑。 –
不幸的是,似乎并没有解决'必须在DependencyObject.'异常的同一线程上创建DependencySource。 – Josh