我想创建一个后台任务,每隔15分钟更新一次GEO位置。
我正在使用后台任务和计时器,当我有位置时我想每15分钟更新一次数据库。
问题出在WindowsRuntimeComponent(用于后台任务)不支持WCF数据服务通信:答案是here
所以我决定在同一个项目中创建后台任务,但是run方法没有触发
当我采用新项目WindowsRuntimeComponent时,我采取了同样的步骤来添加后台任务,
public void Run(IBackgroundTaskInstance taskInstance){
BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
updatelocation();
deferral.Complete();
}
如何在不创建新项目的情况下添加后台任务?
答案 0 :(得分:3)
我认为您应该在应用启动页面上制作计时器基础事件。这会影响您的应用运行的所有时间。它肯定会奏效。 我使用相同的基于xaml C#的商店应用程序。如果用户想要更改=刷新时间,您也可以在设置魅力中添加可配置参数。
答案 1 :(得分:1)
您可以在后台任务中使用WCF Web服务。请尝试下面给出的代码。
public sealed class TestClass : IBackgroundTask
{
void Run(IBackgroundTaskInstance taskInstance)
{
BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
updatelocation();
deferral.Complete();
}
}
public IAsyncOperation updatelocation()
{
return updatelocationHelper().AsAsyncOperation();
}
private async Task<string> updatelocationHelper()
{
var wcfClient = new MyWcfClient();
var content = await wcfClient.updatelocationAsync(wcf_service_url_here);
return content;
}
答案 2 :(得分:1)
如您所见,您无法向Windows运行时组件项目添加服务引用。
您必须拥有的是一个中间dll - 创建一个新的Windows Store 类库项目,然后在那里添加WCF服务引用。然后在Windows运行时组件(后台任务项目)中,添加对Windows Store类库的引用。
您的引用应如下所示:
Windows应用商店应用 - &gt;后台任务项目 - &gt; Windows应用商店库项目 - &gt; WCF服务
您可能还需要从您的应用程序引用库项目 - 尝试以上引用 - 如果您遇到构建错误,请添加此引用:
Windows应用商店应用 - &gt; Windows应用商店库项目
您现在应该能够在后台任务中进行WCF调用。
答案 3 :(得分:0)
在清单中注册特定的后台任务。我认为它适用于所有的Senario。
以下是有用的链接