在使用 WP7 的背景文件传输时,我遇到了这个问题。当我的应用程序正在运行时,它可以完美地工作,但是一旦我点击 Windows 按钮,它就停止了(并在我重新激活应用程序后恢复)。难道背景传输的目的不是在应用程序被停用时仍然在后台运行吗?它必须在一个单独的类中进行(一种与主项目分离的后台代理类吗?)。当我按照此处教程所说的做所有事情时,真是令人沮丧:http://msdn.microsoft.com/en-us/library/hh202959(v=vs.92).aspx。
有没有需要特殊处理的东西来确保它在后台运行呢?或者有些方法,也许是我自己创建的方法(获取 url 等),无法在停用时访问?我不能在停用时添加到队列中,也许吗?
感谢您的时间:)
编辑:一点调试告诉我,队列中的文件实际上正在下载。它已经完成了,但在我重新激活应用程序之前,它不会获取下一个文件。我不能在这样做时使用自己的方法、变量等吗?也许我有一个内部队列,包含 20 个项目。当这个队列变为零时,我该如何填充下载队列(最多 5 个)呢?
编辑2:在 Microsoft 的示例中,他们说您可以在以后的时间添加到队列中:
有没有需要特殊处理的东西来确保它在后台运行呢?或者有些方法,也许是我自己创建的方法(获取 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%确认吗?