在WP7中使用后台文件传输时遇到此问题。它在我的应用程序运行时非常有效,但是当我单击Windows按钮时,它会停止(并在我再次激活应用程序时恢复。)后台文件传输的目的是不是在后台运行,即使你的应用程序已停用?它是否必须在一个单独的类中(某种类型的后台代理类,与主项目分开?)真的令人沮丧,当我在做这里的教程所说的所有内容时:http://msdn.microsoft.com/en-us/library/hh202959(v=vs.92).aspx。
我是否需要做一些“特殊”的事情来确保它在后台运行,或者某些方法,也许是我自己创建的(获取网址等),在停用时无法访问?我可以在停用时添加到队列吗?可能吗?
非常感谢您的时间:)
编辑:一点调试告诉我队列中的文件实际上正在下载。它已完成,但在重新激活应用程序之前它不会获取下一个。这样做时我可以不使用自己的方法,变量等吗?也许我有一个内部队列,比方说,20项。如何在下载队列填充为零时填充下载队列(最多5个)?
EDIT2:在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%确认这个?
答案 0 :(得分:3)
我也研究了这一点,并且不可能(基于我的研究)在最大值之后填充队列。 5个排队的下载已经完成。我考虑过使用后台代理,但后台代理无法使用BackgroundTransferRequest.Add,这意味着排队更多下载的唯一方法就是应用程序运行时(请参阅Unsupported APIs for Background Agents for Windows Phone)。
我唯一能想到的是使用后台代理发送一个Toast通知,让用户知道下载已经完成,他们应该启动应用程序以排队接下来的五次下载。这不太理想。