首先,让我说我已经完成了我的研究。我花了大约一天半的时间观看视频,阅读MSDN,测试和试验。我还没有解决这个问题。尽管我所有的研究都是这样,但这是一个相当广泛的问题,所以我对此表示歉意。这可能部分归因于Windows Phone 8.1的新功能。BackgroundTask澄清
我的目标是每小时增加一次int
,即使应用程序未运行。显然,最好的方法是通过TimeTrigger
和BackgroundTask
。我在我的解决方案中创建了另一个名为BackgroundTaskProject
的项目(Windows Runtime Component
)。我将其班级更名为BackgroundTaskClass
。我参考了我主项目中的BackgroundTaskProject
。
在BackgroundTaskClass
中,我实施了IBackgroundTask
及其Run
方法。 问题1:如果我所要做的只是在主项目中增加一个值,那么在这个方法中有什么用处?如果是这样,什么?
我有复制并将我的RegisterBackgroundTask
方法从MSDN粘贴到BackgroundTaskClass
。
在我的主项目中,我创建了我的TimeTrigger
。我通过BackgroundTaskClass
中的static RegisterBackgroundTask
方法注册了我的BackgroundTask
。我进行了更改,因此BackgroundTask
由于await
/async
方法而被分配给类型为Task<BackgroundTaskRegistration>
的变量。
最终的问题:我在哪里说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)
我明白你在说什么,这种想法已经超越了我的想法,但我只是假设有一种方法可以从后台更改已保存的数据。您的建议无法正常工作的原因是因为我需要使用此数据更新活动磁贴(即使应用程序被暂停,它仍存在)。 – Evorlor
http://thesociablegeek.com/windows-8/livetiles/modifying-live-tiles-in-a-background-process/ –
嗯...似乎是一种工作,但似乎它应该工作!如果我接受你的建议并根据先前保存的值每30分钟计算一次myInt,我应该能够准确更新瓦片而不更新实际值!好文章! – Evorlor