0

私はBackgroundTransferServiceを使用してインターネットからファイルをダウンロードしています。

擬似コードは次のようになります。

BackgroundTransferRequest transferRequest = new BackgroundTransferRequest(transferUri);
transferRequest.Method = "GET";
transferRequest.Tag = "myTag";
transferRequest.TransferPreferences = TransferPreferences.AllowCellularAndBattery;
BackgroundTransferService.Add(transferRequest);

この後、転送が完了したときに転送を処理するイベントハンドラーを追加します。TransferProgressChangedではなく、TransferStatusChangedイベントハンドラーのみを使用しています

transferRequests = BackgroundTransferService.Requests;
transferRequests.Last().TransferStatusChanged += new EventHandler<BackgroundTransferEventArgs>(transfer_TransferStatusChanged);

transfer_TransferStatusChanged()の下で、ダウンロードしたファイルでやりたいことを何でもするか、失敗した状況(404など)を処理します。

問題は、サーバーから404応答がない場合(たとえば、そのようなサーバーがない場合、たとえばwww.googlea.com/myfilename)、ダウンロードが無期限に続くことです。そのようなシナリオのタイムアウトを実装したい..どうすればそれを行うことができますか?

4

1 に答える 1

1

このようなシナリオのサポートは組み込まれていません。タイムアウトサポートを自分で組み込む必要があります。

ただし、接続性とバッテリーの充電レベルによっては、転送が部分的に、非常に長い期間にわたって行われる可能性があるため、大きなファイルの転送には注意してください。

もちろん、転送要求を行う前にファイルが存在することの確認を追加することもできます。サーバーを制御できる場合は、正しい応答も送信されていることを確認する必要があります。

于 2012-05-04T08:13:20.743 に答える