我有以下代码,我试图从用户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();
}
}
答案 0 :(得分:1)
实际上应该调用所有三种方法。当然,如果调用第一个方法并抛出异常,则其他两个方法不会触发。
您可以为每个调用创建一个新客户端,或者按顺序下载它们,因此当OnDownloadCompletedVI
方法完成后,删除OnDownloadCompletedVI
的事件处理程序并添加一个OnDownloadCompletedHI
然后在方法结束时触发client.DownloadAsync(fileIdHistoryItems);
。