背景文件传输问题

6
在使用 WP7 的背景文件传输时,我遇到了这个问题。当我的应用程序正在运行时,它可以完美地工作,但是一旦我点击 Windows 按钮,它就停止了(并在我重新激活应用程序后恢复)。难道背景传输的目的不是在应用程序被停用时仍然在后台运行吗?它必须在一个单独的类中进行(一种与主项目分离的后台代理类吗?)。当我按照此处教程所说的做所有事情时,真是令人沮丧:http://msdn.microsoft.com/en-us/library/hh202959(v=vs.92).aspx
有没有需要特殊处理的东西来确保它在后台运行呢?或者有些方法,也许是我自己创建的方法(获取 url 等),无法在停用时访问?我不能在停用时添加到队列中,也许吗?
感谢您的时间:)
编辑:一点调试告诉我,队列中的文件实际上正在下载。它已经完成了,但在我重新激活应用程序之前,它不会获取下一个文件。我不能在这样做时使用自己的方法、变量等吗?也许我有一个内部队列,包含 20 个项目。当这个队列变为零时,我该如何填充下载队列(最多 5 个)呢?
编辑2:在 Microsoft 的示例中,他们说您可以在以后的时间添加到队列中:
// Check to see if the maximum number of requests per app has been exceeded.
if (BackgroundTransferService.Requests.Count() >= 5)
{
// Note: Instead of showing a message to the user, you could store the
// requested file URI in isolated storage and add it to the queue later.
MessageBox.Show("The maximum number of background file transfer requests for this application has been exceeded. ");
return;
}

但是它没有说明我们是否可以在后台进行此操作。由于这是关于后台文件传输的,他们应该提到它,否则我们应该假设它可以在后台完成,但似乎并非如此。但我们无法确定。有人能够100%确认吗?

1个回答

3
我也研究过这个问题,根据我的研究,当最大的5个下载排队完成后,无法填充队列。我考虑使用后台代理,但是BackgroundTransferRequest.Add在后台代理中不可用,这意味着排队更多的下载的唯一方法是当您的应用程序正在运行时(请参见Windows Phone后台代理的不支持API)。
我唯一能想到的是使用后台代理发送toast通知,让用户知道下载已完成,并提示他们启动应用程序以排队下一个5个下载。这不是很理想。

谢谢回复。这基本上也是我发现的,但这还远远不够。我认为必须有另一种方法来做到这一点,还有其他人研究过这个问题并找到了解决方案吗? - kgrevehagen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接