使用SkyDrive API下载多个文件

时间:2012-11-11 22:56:25

标签: c# windows-phone-7 onedrive

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

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

client.DownloadCompleted += new EventHandler<LiveDownloadCompletedEventArgs>(OnDownloadCompletedVI);
client.DownloadAsync(fileIdVehicleItems);


client.DownloadCompleted += new EventHandler<LiveDownloadCompletedEventArgs>(OnDownloadCompletedHI);
client.DownloadAsync(fileIdHistoryItems);


client.DownloadCompleted += new EventHandler<LiveDownloadCompletedEventArgs>(OnDownloadCompletedRI);
client.DownloadAsync(fileIdRepairItems);

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

我做错了什么?

更新

我有以下方法,但我有两个类似的方法完全相同,除了它加载不同的对象(基于下载的文件)。

我目前收到的错误:

  

发生了'System.ArgumentException'类型的异常   mscorlib.ni.dll但未在用户代码中处理

    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<vehicle>));

                ObservableCollection<vehicle> importedVehicles = new ObservableCollection<vehicle>();
                importedVehicles = (ObservableCollection<vehicle>)serializer.Deserialize(rdr_vi);

                StorageHelper.Save<ObservableCollection<vehicle>>(App.vehicleData, importedVehicles);
            }
            //e.Result.Close();
        }
        else
        {
            infoTextBlock.Text = "Error downloading file: " + e.Error.ToString();
        }
    }

1 个答案:

答案 0 :(得分:1)

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

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