6

我正在尝试在 Windows 10 通用应用程序上使用此代码下载文件:

await downloadOperation.StartAsync().AsTask(token, progressCallback);

它在电脑上工作,但在手机上有时它不会开始下载,甚至在我重新启动手机之前都没有给出异常。这是系统中的错误还是我遗漏了什么?

编辑1:

任务的状态是“等待激活”,所以它不会抛出异常。它只是在等待而不是开始,直到我重新启动手机我总是尝试使用相同的 url,而我在 pc 上没有这个问题。只和手机有关。该任务的属性如下:

4

1 回答 1

3

我终于找到了问题。当我开始下载操作并关闭应用程序而不取消操作时,BackgroundDownloader 会为下一次应用程序启动保留该操作。当下载操作的数量达到最大允许同时操作(我认为 5)时,下一个操作将在等待列表()上,直到前一个操作完成。所以当应用程序像这样启动时,我不得不停止所有未完成的操作:

Task.Run(async () =>
        {
            var downloads = await BackgroundDownloader.GetCurrentDownloadsAsync();
            foreach (var download in downloads)
            {
                CancellationTokenSource cts = new CancellationTokenSource();
                download.AttachAsync().AsTask(cts.Token);
                cts.Cancel();
            }
            var localFolder = ApplicationData.Current.LocalFolder;
            var files = await localFolder.GetFilesAsync();
            files = files.Where(x => x.Name.EndsWith("_")).ToList();
            foreach (StorageFile file in files)
            {
                await file.DeleteAsync(StorageDeleteOption.PermanentDelete);
            }
        });
于 2015-07-17T10:39:34.933 回答