Windows 8 下次应用程序启动时,后台任务将终止

Windows 8 下次应用程序启动时,后台任务将终止,windows-8,windows-runtime,Windows 8,Windows Runtime,我在玩。我对代码进行了一些修改,使其运行时间更长,这样我就可以看到应用程序是否可以在下次启动时“重新连接”到后台任务。我的测试表明,当应用程序第二次启动时,后台任务总是被终止。以下是测试细节: 后台任务由类型为SystemTriggerType.TimeZoneChange的SystemTrigger触发,并在以下情况下按预期工作: 我先启动应用程序,然后更改时区设置 我先更改时区,然后启动应用程序 但是如果我关闭应用程序(通过ALT+F4),然后在后台任务完成之前再次启动它。我将始终看到后台任

我在玩。我对代码进行了一些修改,使其运行时间更长,这样我就可以看到应用程序是否可以在下次启动时“重新连接”到后台任务。我的测试表明,当应用程序第二次启动时,后台任务总是被终止。以下是测试细节:

后台任务由类型为
SystemTriggerType.TimeZoneChange
SystemTrigger
触发,并在以下情况下按预期工作:

  • 我先启动应用程序,然后更改时区设置
  • 我先更改时区,然后启动应用程序 但是如果我关闭应用程序(通过ALT+F4),然后在后台任务完成之前再次启动它。我将始终看到后台任务被终止。有时我会在输出窗口中看到类似“
    程序”[920]backgroundTaskHost.exe:Managed(v4.0.30319)”的消息,其中代码为1(0x1)。


    为什么每次再次启动应用程序时后台任务都会终止?这是设计吗?或者我在这里遗漏了什么?

    如果您在C#中创建BackgroundTask,并且使用Windows 8 RP,我认为您可能必须将项目的输出类型设置为
    WinMD
    文件,而不是类库。是否使用WinMD作为输出类型?

    这是项目引用问题

    如果您在运行backgrond任务时以
    代码1(0x1)
    退出程序,则应将后台任务项目添加到原始项目的引用中


    向您演示如何解析引用。

    是的,我解决了。我想如果我不这样做,它在任何情况下都不会起作用。因为我对上面的答案有一些问题,我想补充一点,您必须创建Windows运行时组件。@SzymonSasin:很久以前,当我还在使用“早期”版本的W8预览时,我问了这个问题。现在W8RTM是可用的,但我还没有在新的操作系统版本上尝试过。不确定问题是否仍然存在。。。但是,“您必须创建Windows运行时组件”,您的意思是我需要为后台任务创建Windows运行时组件吗?但这不是MSDN示例默认的功能吗?谢谢您的回答!但我的程序的问题是,在我关闭应用程序并重新启动它之后,baskground任务无法连接到应用程序。当应用程序第一次启动时,它工作得很好。另一方面,如果我没有引用任务项目,我认为即使我第一次启动它,应用程序也会崩溃。我开始觉得这可能是“设计的”。