我正在使用繼承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