使用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);
在方法的最后。