0

首先,让我说我已经完成了我的研究。我花了大约一天半的时间观看视频、阅读 MSDN、测试和实验。我还没有解决这个问题。尽管我进行了所有研究,但这将是一个相当广泛的问题,所以我为此道歉。这可能部分是由于 Windows Phone 8.1 的新颖性。

我的目标是int每小时增加一次,即使应用程序没有运行。显然,最好的方法是通过 aTimeTriggerBackgroundTask。我已经创建了在我的解决方案中Windows Runtime Component调用的单独项目 ( ) BackgroundTaskProject。我将其类重命名为BackgroundTaskClass. 我BackgroundTaskProject从我的主要项目中引用。

BackgroundTaskClass,我实现IBackgroundTask了它的Run方法。 问题 1:如果我要做的只是在我的主项目中增加一个值,那么这里的方法有什么用吗?如果是这样,是什么?

我已将我的RegisterBackgroundTask方法从 MSDN 复制并粘贴到BackgroundTaskClass.

在我的主项目中,我创建了我的TimeTrigger. 我BackgroundTask通过. static RegisterBackgroundTask_ 由于/方法BackgroundTaskClass,我进行了更改,以便将其BackgroundTask分配给类型的变量。Task<BackgroundTaskRegistration>awaitasync

终极问题:我在哪里说myInt++让它每小时运行一次?(myInt在我的主要项目中。)

我可以根据要求提供特定的代码或回答问题,但这里有一些您可能需要的:

在主要项目/课程中:

TimeTrigger hourlyTrigger = new TimeTrigger(60, false);
Task<BackgroundTaskRegistration> task = BackgroundTaskProject.BackgroundTaskClass.RegisterBackgroundTask("BackgroundTaskProject.BackgroundTaskClass", "Number Incrementer", hourlyTrigger, null);

BackgroundTaskClass

Copy and pasted from MSDN (http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh977055.aspx and http://msdn.microsoft.com/en-us/library/windows/apps/xaml/jj553413.aspx)
4

1 回答 1

2

我不是很精通 Windows 8 手机,但我可以看出你有一个基本的误解:你的 myInt无处可去。

问题是你假设某些东西会一直运行,但事实并非如此。

您的主应用程序可能随时暂停,此时您应该保存恢复应用程序所需的任何数据 -> 即一旦暂停,您的应用程序就消失了,它不再在内存中,因此没有 myInt 可以增加。

您的后台任务更糟糕:一旦完成 run 方法的执行,它就会从内存中删除-> 即,如果您在后台任务中增加一个 myInt ,那么下次触发您的后台任务时,它将被设置为其初始值值,因为它是一个的后台任务。

正确的做法是:当您的应用程序第一次启动时,将 myInt 的时间和初始值保存到应用程序存储中。现在,当您需要计算 myInt 的值时,只需根据这些初始值即时计算。

于 2014-07-23T02:26:57.650 回答