Ich erstelle eine Windows 10 UWP App, die HintergrundDownloader betrifft dies funktioniert nur auf dem Desktop und nicht auf dem Handy.BackgroundDownloader funktioniert nicht für Windows 10 Mobile UWP?
Code:
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;
}
}
Nach der Leitung await d.StartAsync().AsTask(cancellationToken.Token,progressCallback);
das Programm nicht weitergehen. Und es gibt auch keine Fehler. Das klappt nicht nur am Telefon funktioniert einwandfrei auf dem Desktop! Was vermisse ich?
es ist nur ein Tipp, aber beim Start der Anwendung nach der vorherigen Beendigung sollten Sie alle vorhandenen DownloadOperationen auflisten und sie an die aktuelle Sitzung wieder anfügen. BackgroundDownloader unterstützt keine konsistenten Downloads derselben URI. Wenn DownloadOperation irgendwo hängt, kann dies das Problem verursachen. Siehe https://msdn.microsoft.com/library/windows/apps/br207126 – Liero
Danke für den Tipp Liero, versuchte das aber es funktioniert immer noch nicht. – AbsoluteSith
Ich habe Ihren Code in Mobile Emulator 10.0.10240 ohne 'SoundClass' getestet, da ich nicht weiß, was es ist und Ihr Code funktioniert gut. Testen Sie im Emulator oder in einem echten Gerät? Hier ist ein [Hintergrund Übertragungsbeispiel] (https://github.com/Microsoft/Windows-Universal-samples/tree/master/Samples/BackgroundTransfer) von Microsoft, Sie können es mit dem URI testen, den Sie in Ihrem Code verwendet haben, um zu sehen ob es funktioniert. –