问题标签 [background-transfer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
251 浏览

c# - 后台应用程序设置已关闭的 BackgroundDownloader

我有一个使用 BackgroundDownloader 加载图片的 UWP Windows 8.1 应用程序。即使应用程序被暂停,我也需要能够下载。该应用程序在 Windows 8 和 Windows 10 上运行。在 Windows 10 中,可以禁用后台任务(设置 -> 隐私 -> 后台应用程序)。如果我的应用程序被阻止使用后台任务,下载将永远不会完成。

我尝试使用 BackgroundExecutionManager.GetAccessStatus() 来确定当前权限并在权限关闭时切换到 HttpClient。我遇到了两个问题:

  1. 我只能在下载之前获得当前状态。我没有找到任何方法从系统中获取通知或设置已更改的内容。
  2. 在 Windows 8 上,调用此方法会导致应用程序崩溃。

所以我有两个问题:

  1. 当 Windows 10 中的后台应用程序设置关闭时,有什么方法可以使用 BackgroundDownloader?(我想注意到,即使关闭设置,UWP Windows 10 应用程序中的相同代码也能正常工作)。
  2. 有什么方法可以在 Windows 8 和 10 上正常工作,以确定后台应用程序设置状态并在更改时做出反应?

我使用类似的代码

0 投票
1 回答
291 浏览

c# - UWP BackgroundTransfer (CreateDownload / GetCurrentDownloadsAsync) 异常

我正在为 UWP 使用BackgroundTransfer API,在我的开发过程中,我实现了远远超过传输限制(200)的目标,直到现在这还没有成为问题,因为 Windows 管理取消了超过限制的传输。但是现在,我永远无法通过BackgroundDownloader().CreateDownload()或调用BackgroundDownloader.GetCurrentDownloadsAsync()创建新的下载,因为这个异常总是发生:

WinRT 信息:已超出最大并发操作数的配额。在开始新的操作之前等待操作完成。

我已经尝试了很多方法来解决这个问题,但没有成功:

  • 等待很长时间(几天)才能完成那些丢失的后台下载
  • 多次重启电脑
  • 终止/重置/卸载/重新安装我的应用程序(设置 -> 应用程序和功能)
  • 为 Windows 应用商店应用程序运行疑难解答
  • Windows更新
  • 从 Register (regedit) 中清除我的应用程序的所有引用

我真的不想格式化/重新安装我的 Windows 10。:(

任何人都知道我该如何解决这个问题?

0 投票
0 回答
55 浏览

c# - UpoadOperationProgress 立即返回 bytessent = bytestosend

在我成功完成上传操作后,我现在正在尝试获得一些进度 UI。现在这是我的代码,包括进度回调和该回调的处理程序。

问题是当HandleUpload被调用时,'bytessent' 和 'bytestosend' 立即相等,我的进度条设置为 100% 并在那里等到任务完成。我以前从未处理过进度回调,所以我可能做错了。

0 投票
1 回答
66 浏览

uwp - 如何取消下载操作?

对于下载,我使用 BackgroundDownloader。如果用户需要删除文件(状态=下载),我需要取消下载操作。但我没有在 DownloadOperation 的列表中找到方法。请告诉我,如何实施?

0 投票
0 回答
26 浏览

.net - UWP BackgroundTransfer StartAsync 但不等待任务完成

是否可以启动 DownloadOperation 但不等待下载完成?基本上,我想编写一个在 Timer 上运行的后台任务,安排一些下载并完成。处理进度/完成的代码计划在用户唤醒 UI 以监视进度时通过 AttachAsync 单独运行。

我的意思是我需要一种类似于老式方法的东西,它调用“void/Task RunDownload”,但没有义务订阅像 OnProgress/OnCompleted 这样的事件。

打电话

downloader.CreateDownload(uri, file).StartAsync()

没有等待是一个坏主意-我想确保操作已安排好,以后可以通过 BackgroundDownloader.GetCurrentDownloadsAsync() 访问