私は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)、ダウンロードが無期限に続くことです。そのようなシナリオのタイムアウトを実装したい..どうすればそれを行うことができますか?