我正在编写 Windows Phone 8.1 Silverlight 应用程序。
我正在使用 Windows.Networking.BackgroundTransfer 命名空间中的 DownloadOperation 和 UploadOperation 来下载/上传图像、文件......并且所有这些都可以在 Windows Phone 8.1 设备/模拟器上成功运行,但在 Windows Phone 10 模拟器上却不行。
问题是 DownloadOperation / UploadOperation 没有开始下载/上传,甚至没有提供进度回调甚至异常......看起来该应用程序在调用 .StartAsync() 后开始休眠......
这是我如何使用此 API 的示例:
StorageFile destinationFile;
try
{
destinationFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(item.Name,
CreationCollisionOption.ReplaceExisting);
}
catch (FileNotFoundException ex)
{
if (Debugger.IsAttached) Debugger.Break();
return;
}
var backgroundDownload = _backgroundDownloader.CreateDownload(new Uri(item.Url), destinationFile);
backgroundDownload.CostPolicy = BackgroundTransferCostPolicy.Always;
try
{
var progresscallback = new Progress<DownloadOperation>(operation =>
{
if (operation.Progress.TotalBytesToReceive != 0)
{
var progress = 100 * operation.Progress.BytesReceived / (double)operation.Progress.TotalBytesToReceive;
item.Progress = progress;
}
});
await backgroundDownload.StartAsync().AsTask(_cancellationTokenSource.Token, progresscallback);
var info = backgroundDownload.GetResponseInformation();
if (info.StatusCode == 200 || info.StatusCode == 206)
{
ImagesToDownload.Remove(item);
DownloadedImages.Insert(0, item);
}
else
{
if (Debugger.IsAttached) Debugger.Break();
}
}
catch (Exception ex)
{
if (Debugger.IsAttached) Debugger.Break();
}
}
我看到其他一些人也有同样的问题: Windows 10 移动版中的 BackgroundUploader 和 BackgroundDownloader
但是我没有找到解决方案如何解决这个问题?取消未完成的操作和设备重启没有帮助。
帮助如何强制在 Windows Phone 10 模拟器/设备上运行 DownloadOperation?
在这个测试应用程序中,即使在我尝试下载前 4 个图像时第一次部署应用程序后,我也可以重现这个错误......