Silverlightアプリケーションでは、大量のファイルをダウンロードする必要があります。ファイルのダウンロードが終了したら、ObservableCollectionオブジェクトを更新する必要があります。Silverlightで単一ObservableCollectionにアクセスする複数の非同期メソッド
private void downloadFiles(List<string> files)
{
foreach (var file in files)
{
string _file = file;
new WebClient().OpenReadTaskAsync(new Uri(_file)).ContinueWith(t1 =>
{
Stream stream = t1.Result;
byte[] buffer = new byte[stream.Length];
stream.ReadAsync(buffer, 0, (int)stream.Length).ContinueWith(t2 =>
{
myObservableCollection.Add(_file); //An Exception is thrown.
});
});
}
}
をmyObservableCollection例外がスローされるに追加しようとすると::
がて、CollectionChangedかにPropertyChangedイベント中のObservableCollectionに変更することはできませんこれは私が使用していたコードです。
それぞれのOpenReadTaskAsyncで待つべき解決方法の1つですが、I/Oを最大化することはありません。私はまた、それが助けることができるように見えるReaderWriterLockに出くわしましたが、残念ながらそれはSilverlightでavaibleではありません。
この問題はどのように処理できますか?