0

我正在使用 BackgroundTransferService 从 Internet 下载文件。

伪代码是这样的:

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),我的下载会无限期地继续。我想为这种情况实施超时..我该怎么做?

4

1 回答 1

1

没有对这种情况的内置支持。您必须自己建立超时支持。

传输大文件时要小心,因为传输可能会在很长一段时间内分批完成,具体取决于连接性和电池电量。

当然,您可能希望在发出传输请求之前添加一个文件是否存在的检查,如果您对服务器有任何控制权,您应该确保也发送了正确的响应。

于 2012-05-04T08:13:20.743 回答