0

ユーザーの SkyDrive アカウントから 3 つの異なるファイルをダウンロードしようとしている次のコードがあります。

Windows Phone の開発には SkyDrive API を使用しています。

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 です。ダウンロード中のすべてのファイルがこの方法で実行されているため、エラーが発生しています。

私は間違って何をしていますか?

アップデート

私は次の方法を持っていますが、(ダウンロードしたファイルに基づいて)異なるオブジェクトをロードすることを除いて、まったく同じことを行う他の2つの同様の方法があります。

私が現在受け取っているエラー:

タイプ '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();
        }
    }
4

1 に答える 1

1

実際には、3 つのメソッドすべてを呼び出す必要があります。もちろん、最初のメソッドが呼び出されて例外がスローされた場合、他の 2 つのメソッドはトリガーされません。

できることは、呼び出しごとに新しいクライアントを作成するか、それらを順番にダウンロードすることです。そのため、OnDownloadCompletedVIメソッドが完了したら、のイベント ハンドラーを削除してOnDownloadCompletedVI追加し、メソッドの最後で をOnDownloadCompletedHIトリガーします。client.DownloadAsync(fileIdHistoryItems);

于 2012-11-11T23:31:05.250 に答える