我正在使用BackgroundTransferService从互联网上下载文件。
伪代码是这样的:
BackgroundTransferRequest transferRequest = new BackgroundTransferRequest(transferUri);
transferRequest.Method = "GET";
transferRequest.Tag = "myTag";
transferRequest.TransferPreferences = TransferPreferences.AllowCellularAndBattery;
BackgroundTransferService.Add(transferRequest);
在此之后,我添加一个事件处理程序来完成传输。 我只使用TransferStatusChanged事件处理程序,而不是TransferProgressChanged
transferRequests = BackgroundTransferService.Requests;
transferRequests.Last().TransferStatusChanged += new EventHandler<BackgroundTransferEventArgs>(transfer_TransferStatusChanged);
在transfer_TransferStatusChanged()下我做我想做的任何我下载的文件,或处理失败的情况(404等)。
问题是如果服务器没有404响应(例如没有这样的服务器,例如www.googlea.com/myfilename),我的下载会无限期地继续下去。我想为这种情况实现超时..我该怎么做?
答案 0 :(得分:1)
此类方案没有内置支持。你必须自己构建超时支持。
小心传输大文件,因为传输可以在很长一段时间内完成,具体取决于连接和电池电量。
当然,您可能希望在发出传输请求之前添加检查文件是否存在,如果您对服务器有任何控制权,则应确保正在发送正确的响应。