のコレクションを取得するために 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プロパティだけで非常に単純です。
私のViewModelでは:
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);
}
}
これは、UI スレッドで DataCollector.GetEnumerator() から生成Must create DependencySource on same Thread as the DependencyObject.
する を作成する必要があるということですか? DataType
どうすればこれを回避できますか?