【问题标题】:How can I declare a Background Task before writing one?如何在编写后台任务之前声明一个后台任务?
【发布时间】:2012-11-06 01:02:00
【问题描述】:

在我的 Package.appxmanifest 文件中,我添加了一个后台任务声明,”因为我最终需要一个 - 它还没有被编写。我选择“系统事件”作为支持的任务类型,但在应用设置(可执行文件、入口点、起始页)。

当我在添加该声明后尝试运行应用程序时,我得到:“应用程序清单缺少必需的元素 '/Package/Applications/Application/Extensions/Extension/BackgroundTasks/Task'”

那么是否有一些值我可以输入到“应用程序设置”编辑框之一,还是我必须先创建后台任务才能声明我将使用一个,或者...?? ?

更新

根据http://www.silverlightshow.net/items/Windows-8-metro-make-your-app-alive-with-background-tasks.aspx,ControlChannel 选项可用于套接字:

"ControlChannel:这些任务,仅在 XAML/C# 应用程序中可用,可以在网络连接时得到通知 资源接收一些数据。这些主要与 StreamSockets 相关。此任务还需要 锁屏约束。”

文章还提到:“...您可以收到有关许多系统事件的通知。这些事件在发生某些事情时触发,例如传入的 SMS,...” 但如果我理解正确,只有 Mobile Service Providers 可以实现 SMSReceived 事件。

但我仍然不清楚的一件事是:我可以在我的项目中创建一个类吗? 后台任务,还是我需要在我的解决方案中添加一个项目,该项目将是/包括 后台任务?如果是后者,这个项目应该是“类库(Windows Store Apps)”还是 “Windows 运行时组件”项目类型?

【问题讨论】:

    标签: windows-8 microsoft-metro backgroundworker background-process appxmanifest


    【解决方案1】:

    您可以在应用清单文件中定义后台任务。后台任务定义在哪里没有这个要求,可以放首页地址。见下图。您需要定义Task Type。在我的例子中,我定义了Timer。还有Entry point,在我的例子中我定义了ItemsPage.cs,(我在ItemsPage.cs 中没有后台任务)。

    之后,您需要在Application UI 选项卡中拥有Badge logoLock Screen Notifications

    【讨论】:

    • 我猜我的情况可能需要“系统事件”(假设传入套接字消息有系统事件)。似乎 Entry point = 似乎太模糊了,但 - 是否不需要声明将运行的 .dll 的确切名称?然后 - 那应该采取什么“形状”?
    • 是的,它必须是NameOfTheDll.NameOfTheUnit,它是一样的。签出以下示例。 Background Task Sample
    【解决方案2】:

    你可以在实际实现之前定义后台任务,只是:

    • 在清单添加功能后台任务中,检查计时器并在入口点行中添加包含后台任务代码的类的全名。就我而言,我到达了那里:

    Tasks.UpdateTask

    • 选择锁屏通知类型并选择徽章标志。注意 徽章徽标必须为 24x24,并且只能使用白色或(半)透明背景

    更新,后台任务必须在另一个项目中定义,并且必须是“Windows 运行时组件”类型。请注意,这种类型的项目有几个限制,基本上您将无法在其中引用任何其他非 Windows 运行时组件库。
    http://msdn.microsoft.com/en-us/library/windows/apps/br230301.aspx

    【讨论】:

    • 我希望除了 Timer 之外还有另一个选项,因为这个任务需要一直在运行,监听传入的消息(使用套接字)。
    • 没有办法,如何创建 Windows Store (Metro) 应用程序,即“始终在后台运行”。您可以使用推送通知或每 15 分钟运行一次的后台任务来检查某些内容,但不能“始终在后台”。
    • 那么如何创建套接字应用程序?您永远不知道消息何时会通过套接字进入。我认为你可能是错的,我当然希望你是。
    • 来自code.msdn.microsoft.com/windowsapps/…:即使注册后台任务的应用程序被挂起,后台任务也可以运行。 ... •创建由系统事件触发的后台任务。所以后台任务,为了随时准备响应事件,必须像一只躲在灌木丛中的大猫一样,通常静止不动,但随时准备突袭。
    • 另外,这里:msdn.microsoft.com/en-us/library/windows/apps/xaml/… 它说:“本主题展示了如何在 Windows 应用商店应用程序处于后台时保持网络连接。”
    【解决方案3】:

    您必须至少创建一个入口点才能在应用清单中列出它。

    【讨论】:

    • 这个入口点有什么要求?它需要有特定的签名吗?
    • 是的 - 查看此链接以获取有关如何构建它们的更多信息:msdn.microsoft.com/en-us/library/windows/apps/…
    • 谢谢,但该链接只提供了非常少的信息和很少的细节。
    猜你喜欢
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 2011-09-29
    • 2011-09-15
    • 2013-02-04
    • 2017-10-01
    相关资源
    最近更新 更多