我正在使用一个继承 IEnumerable 的类来检索DataType
.
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.
}
}
现在 DataType 非常简单,只有一个Name和Value属性。
在我的视图模型中:
private AsyncObservableCollection<DataType> _Data = new AsyncObservableCollection<DataType>();
我AsyncObservableCollection
从这里使用,所以我可以从 BackgroundWorker 填充它。
ViewModel 中的构造函数创建了一个 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.
这是否意味着我需要DataType
在 UI 线程中创建从 DataCollector.GetEnumerator() 产生的内容?我怎样才能解决这个问题?