UWP在启动时启动后台任务

时间:2018-08-19 05:05:57

标签: c# windows multithreading uwp background

我刚刚开始学习UWP,我对它的工作方式感到非常困惑。我已经看过数十篇有关我的问题的文章,但无法弄清楚该怎么做。 因此,我想制作一个在Windows启动时运行的应用程序,我希望该应用程序不可见,因此需要后台任务,如何在不进入应用程序UI的情况下触发该后台任务? 该应用程序应该始终运行后台任务,并且其界面应该用作“设置”,因此我不需要在启动时显示该应用程序。 谢谢。

2 个答案:

答案 0 :(得分:0)

如果您刚开始使用 Windows Template Studio ,它将是您的理想选择。VisualStudio是Visual Studio的扩展,它使您可以创建具有很多内置功能的新uwp项目,并且只能选择所需的功能,这样可以节省大量的基本时间。 https://github.com/Microsoft/WindowsTemplateStudio

答案 1 :(得分:0)

经过大量的搜寻,我找到了自己的出路。老实说,我得出的结论与Motaz相同。但是在撰写本文时,我对已经拥有的东西也投入了太多精力。虽然我在这里所提出的并不是对他问题的完美答案。我想回来,将我所学到的东西发布给到这里的其他人。

我需要一个应用程序,该应用程序在启动时将监视第三方USB设备,直到该应用程序关闭为止(无论该应用程序是否最小化)

Windows Template Studio很好,但是文档不是很多。尤其是涉及后台任务。

我从这里开始:https://github.com/Microsoft/Windows-universal-samples。但是有两个问题。

  1. 他们组合了所有示例,并且共享了一些代码,这使得很难在不破坏原始示例的情况下将项目拉出并破解。

  2. 按照他们的后台任务示例,我永久性地出现了清单问题,并且想要音频任务

我回到了模板工作室,并创建了最简单的版本并可能执行后台任务。经过反复试验,我得到了一些有用的东西。我已将其发布在这里:https://github.com/PillarOfSociety/WindowsTemplateStudio-BackgroundTask

一些注意事项:

  • 我不是UWP的专家,在运行此程序时,我无意将其放入商店,也没有尝试。

  • 如果您确实下载并运行了我的项目,则应该能够点击“添加事件”和“开始后退”按钮,并且任务应该运行并更新进度栏。

  • 我使用了ApplicationTrigger。模板中的原始示例使用了一个TimeTrigger,它花费了MINUTES的时间(花了我太多时间才弄清楚这一点)。据说应用程序触发器有30秒的超时时间..但是在我的笔记本电脑上,它们的寿命更长..我不知道要多久。该页面非常有用:https://docs.microsoft.com/en-us/windows/uwp/launch-resume/support-your-app-with-background-tasks

  • 由模板工作室生成的BackgroundTaskService将在应用关闭后保留后台任务的注册状态,但是一旦重新运行将不会重新建立连接,因此在重新运行时,该任务似乎无法运行,或者将崩溃该应用程序在触发时。

  • 我发现的重要代码:

    foreach (var task in BackgroundTaskRegistration.AllTasks)
    {
        TestText += task.Value.Name; //gets the typename of the task
        //task.Value.Unregister(true); //will unregister tasks
    }
    await Task.CompletedTask;
    
  • BackgroundTaskRegistration.AllTask​​s中的任务不是模板工作室使用的BackgroundTask类。在我的示例中,每次运行时我都会注销所有它们,以便您可以将该任务作为BackgroundTask的实例进行引用。

希望这对某人有帮助,祝你好运!

相关问题