私はWindowDownloaderを含むWindows 10 UWPアプリケーションを作成しています。これは、デスクトップでのみ動作し、電話では動作しません。Windows 10のモバイルUWPではBackgroundDownloaderが動作していませんか?
コード:プログラムが進行していないawait d.StartAsync().AsTask(cancellationToken.Token,progressCallback);
ライン後
var dl = new BackgroundDownloader();
dl.CostPolicy = BackgroundTransferCostPolicy.Always;
file = await localSoundsFolder.CreateFileAsync(name, CreationCollisionOption.ReplaceExisting);
if (file != null)
{
var d = dl.CreateDownload(new Uri(uriToDownloadFrom,UriKind.RelativeOrAbsolute), file);
d.Priority = BackgroundTransferPriority.High;
var progressCallback = new Progress<DownloadOperation>(x => DownloadProgress(x, sc));
try
{
await d.StartAsync().AsTask(cancellationToken.Token,progressCallback);
//After this line it doesn't progress!
CancellationTokenSource token = Utility.cancellationList[sc];
if (token != null)
{
token.Cancel();
Utility.cancellationList.Remove(sc);
Debug.WriteLine("The sc has been removed from the download list");
}
}
catch
{
return;
}
}
private static void DownloadProgress(DownloadOperation download,SoundClass sc)
{
Debug.WriteLine("Callback");
var value = download.Progress.BytesReceived * 100/download.Progress.TotalBytesToReceive;
Debug.WriteLine("The bytesReceived is {0} and total bytes is {1}", download.Progress.BytesReceived.ToString(), download.Progress.TotalBytesToReceive.ToString());
new System.Threading.ManualResetEvent(false).WaitOne(10);
sc.downloadProgress = value;
if (download.Progress.Status == BackgroundTransferStatus.Completed || value >= 100)
{
Debug.WriteLine("DONE donwloading the file {0}", download.ResultFile.Name);
Debug.WriteLine("The file name happened to be to be added was " + download.ResultFile.Name);
string fileName = download.ResultFile.Name;
}
}
。あまりにも誤りはありません。これは、電話でのみ動作していない完全にデスクトップ上で動作します!私は何が欠けていますか?
これは単なるヒントですが、前回の終了後のアプリケーションの起動時には、既存のDownloadOperationsをすべて列挙して、それらを現在のセッションに再接続する必要があります。 BackgroundDownloaderは同じURIの同時ダウンロードをサポートしていないため、DownloadOperationがどこかにぶら下がっていると問題が発生する可能性があります。 https://msdn.microsoft.com/library/windows/apps/br207126 – Liero
チップLieroをお寄せいただきありがとうございますが、まだ動作していません。 – AbsoluteSith
私はそれが何であるか分からず、あなたのコードがうまく動作しないので、MobileEmulator 10.0.10240であなたのコードを 'SoundClass'なしでテストしました。エミュレータまたは実際のデバイスでテストしていますか? Microsoftの[Background transfer sample](https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/BackgroundTransfer)は、コードで使用したURIでテストすることができますそれが動作すれば。 –