2012-05-04 45 views
0

我正在使用BackgroundTransferService從Internet上下載文件。在BackgroundTransferService傳輸請求上實現超時 - Windows Phone

僞代碼是這樣的:

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

在此之後,我添加一個事件處理程序完成時,它以辦理過戶。 我只使用TransferStatusChanged事件處理程序,不transfer_TransferStatusChanged()我做任何我想做的事與我下載的文件,或者處理故障的情況下(404等)下TransferProgressChanged

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

問題是,如果服務器沒有404響應(例如,當沒有這樣的服務器,例如www.googlea.com/myfilename),我的下載無限期地繼續進行。我想實現這種情況下的超時。我該怎麼做?

回答

1

沒有內置的支持這種情況。你必須自己構建超時支持。

小心transfering大文件,即使作爲傳輸可以在零部件和在一個非常大的時期來完成,這取決於連接和電池電量的。

當然,你可能想增加一個檢查一個文件進行傳輸請求之前就存在,如果你有超過服務器的任何控制,你應該確保正確的響應被髮送過。