2011-07-14 20 views
0

ファイルをアップロードするためのWPF MVVMプリズムアプリケーションがあります。 私がディレクトリからデータグリッドにファイルをリストアップし、Uploadボタンを に選択したファイルをデータグリッドからアップロードします。WPFデータバインディング非同期

このため、私はグリッド 'selecteditems'をボタンのコマンドパラメータに渡します。 これを同期方式でうまく実装しましたが、この機能を非同期で に拡張したかったのです。

デリゲート

を使用して これはここに私の非同期関数呼び出し

asyncUpload.BeginInvoke(selectedFiles,out tt, new AsyncCallback(test),null); 

選択したファイルは、アップロードボタンのコマンド・パラメータを通過したデータグリッドから「selectedItemsの」です。 問題は、アップロードのために最初のスレッドを実行している間に、最初のスレッドの選択されたファイルを変更する をアップロードするために、DataGridから別のファイルセットを選択していることです。

どうすればこの問題を解決できますか?事前に

おかげで...

答えて

0

はあなたのBeginInvokeメソッド()メソッドの中に実際の 'selectedItemsの' リストを渡さないでください。

代わりに、 'SelectedItems'リストのコピーを渡します。

Array[] array = new Array[dataGrid.SelectedItems.Count]; 

dataGrid.SelectedItems.CopyTo(array,0); 

asyncUpload.BeginInvoke(array.ToList(), out tt, new AsyncCallback(test), null); 
+0

おかげで、私はこれを実現... asyncbegin.Invoke前のforeach(selectedFilesにおけるオブジェクトSS) {}を使用して... – S007