2012-06-24 50 views
3

我正在玩the Background Task code sample (c#) from MSDN。我稍微修改了代码以使其运行更长时间,以便我可以看到应用程序下次启动时是否可以“重新连接”到后台任务。我的测试显示,后台任务总是在应用程序第二次启动时终止。下面是测试细节:后台任务将在下次启动时终止

后台任务是通过触发型SystemTriggerType.TimeZoneChangeSystemTrigger,和它的作品如预期,如果:

  1. 我第一次启动该应用程序,然后改变我区设置;
  2. 我首先更改我的时区,然后启动应用程序;

但是,如果我关闭应用程序(通过ALT + F4),然后在后台任务完成之前再次启动它。我会一直看到后台任务被终止。有时我会在“输出”窗口中看到类似“The program '[920] backgroundTaskHost.exe: Managed (v4.0.30319)' has exited with code 1 (0x1).”的消息。

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

回答

1

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

+0

是的,我做到了。我猜如果我不这样做的话,它无论如何都不会起作用。 –

+0

因为我在上面的答案中遇到了一些问题,所以我想补充一点,您必须创建Windows运行时组件。 –

+0

@SzymonSasin:当我还在使用W8 PREVIEW的'以前的'版本时,我很早就问过这个问题。现在W8 RTM是可用的,但我没有尝试过新的操作系统版本。不知道问题是否仍然存在......但是,由于'您必须创建Windows运行时组件',您是不是说我需要为后台任务创建Windows运行时组件?但是,这不是MSDN默认的例子吗? –

2

这是项目参考问题。

如果您在运行背景任务时退出了程序code 1 (0x1),则应该将后台任务项目添加到原始项目的引用中。

[Windows 8] The crash problem about BackgroundTask向您显示如何解决该参考。

+0

感谢您的回答!但是我的程序问题是关闭应用程序并重新启动后,baskground任务无法连接到应用程序。它在第一次启动应用程序时效果很好。另一方面,如果我没有参考任务项目,我认为即使我第一次启动它,应用程序也会崩溃。 我开始觉得这可能是“设计”。 –

相关问题