C# WPF异步数据绑定

C# WPF异步数据绑定,c#,wpf,data-binding,C#,Wpf,Data Binding,我有一个WPF MVVM prism应用程序来上传文件。 我用一个目录中的文件列表填充了一个datagrid,并获得了一个上载按钮,用于从datagrid上载所选文件 为此,我将网格selecteditems传递给按钮的命令参数。 我以同步的方式成功地实现了这一点,现在我想扩展它 通过使用委托以异步方式实现此功能 这是我的异步函数调用: asyncUpload.BeginInvoke(selectedFiles, out tt, new AsyncCallback(test), null);

我有一个WPF MVVM prism应用程序来上传文件。 我用一个目录中的文件列表填充了一个datagrid,并获得了一个上载按钮,用于从datagrid上载所选文件

为此,我将网格
selecteditems
传递给按钮的命令参数。 我以同步的方式成功地实现了这一点,现在我想扩展它 通过使用委托以异步方式实现此功能

这是我的异步函数调用:

asyncUpload.BeginInvoke(selectedFiles, out tt, new AsyncCallback(test), null);
这里所选的文件是通过上传按钮的命令参数从数据网格传递的
selecteditems
。 问题是,在执行第一个上传线程时,我正在从datagrid中选择另一组要上传的文件,这将更改第一个线程选择的文件


如何解决此问题?

不要将实际的
SelectedItems
列表传递到
BeginInvoke()
方法中

而是传递一份
SelectedItems
列表的副本

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

dataGrid.SelectedItems.CopyTo(array, 0);

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

谢谢,我实现了这个…在asyncbegin.Invoke之前使用foreach(selectedFiles中的对象ss){}。。。