Window App store>用于后台的新项目WindowsRuntimeComponent不能与WCF数据服务一起使用

时间:2013-11-21 10:45:51

标签: c# windows-phone-8 microsoft-metro windows-store-apps

我想创建一个后台任务,每隔15分钟更新一次GEO位置。

我正在使用后台任务和计时器,当我有位置时我想每15分钟更新一次数据库。

问题出在WindowsRuntimeComponent(用于后台任务)不支持WCF数据服务通信:答案是here

所以我决定在同一个项目中创建后台任务,但是run方法没有触发

当我采用新项目WindowsRuntimeComponent时,我采取了同样的步骤来添加后台任务,

public void Run(IBackgroundTaskInstance taskInstance){
  BackgroundTaskDeferral deferral = taskInstance.GetDeferral();
  updatelocation();
  deferral.Complete();
}

如何在不创建新项目的情况下添加后台任务?

4 个答案:

答案 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)

Add background task in app Manifest

在清单中注册特定的后台任务。我认为它适用于所有的Senario。

以下是有用的链接

Its about background Task

Its about how to define it

this will help you to understand data limit and all