使用SkyDrive API下载多个文件

我有以下代码,我试图从用户SkyDrive帐户下载3个不同的文件。

我正在使用SkyDrive API进行Windows Phone开发。

client.DownloadCompleted += new EventHandler(OnDownloadCompletedVI); client.DownloadAsync(fileIdVehicleItems); client.DownloadCompleted += new EventHandler(OnDownloadCompletedHI); client.DownloadAsync(fileIdHistoryItems); client.DownloadCompleted += new EventHandler(OnDownloadCompletedRI); client.DownloadAsync(fileIdRepairItems); 

当我运行它时,唯一被调用的方法是OnDownloadCompletedVI。 正在下载的所有文件都通过此方法运行,从而导致错误。

我做错了什么?

更新

我有以下方法,但我有2个其他类似的方法完成相同的事情,除了它加载不同的对象(基于下载的文件)。

我目前收到的错误:

mscorlib.ni.dll中出现“System.ArgumentException”类型的exception,但未在用户代码中处理

  void OnDownloadCompletedVI(object sender, LiveDownloadCompletedEventArgs e) { if (e.Result != null) { using (var stream_vi = e.Result) { StreamReader SRVI = new StreamReader(stream_vi); string contentVI = ""; contentVI = SRVI.ReadToEnd(); StringReader rdr_vi = new StringReader(contentVI); XmlSerializer serializer = new XmlSerializer(typeof(ObservableCollection)); ObservableCollection importedVehicles = new ObservableCollection(); importedVehicles = (ObservableCollection)serializer.Deserialize(rdr_vi); StorageHelper.Save<ObservableCollection>(App.vehicleData, importedVehicles); } //e.Result.Close(); } else { infoTextBlock.Text = "Error downloading file: " + e.Error.ToString(); } } 

实际上应该调用所有三种方法。 当然,如果调用第一个方法并抛出exception,则其他两个方法不会触发。

您可以做的是为每个调用创建一个新客户端,或按顺序下载它们,因此当OnDownloadCompletedVI方法完成时,删除OnDownloadCompletedVI的事件处理程序并为OnDownloadCompletedVI添加一个,然后触发客户端client.DownloadAsync(fileIdHistoryItems); 在方法的最后。