簡體   English   中英

UWP 啟動時啟動后台任務

[英]UWP Start background task at startup

我剛開始學習 UWP,我對它的工作原理感到非常困惑。 我已經看到數十篇帖子討論了我的問題,但不知道如何做我想做的事。 所以我想制作一個在 Windows 啟動時運行的應用程序,我希望該應用程序不可見,因此它需要一個后台任務,如何在不進入應用程序 UI 的情況下觸發此后台任務? 該應用程序應該始終運行后台任務,並且它的界面應該用作“設置”,因此我不需要在啟動時顯示該應用程序。 謝謝。

如果您剛剛開始使用Windows Template Studio ,它將非常適合您它是 Visual Studio 的擴展,它允許您創建具有許多內置功能的新 uwp 項目,並且您只能選擇您想要的功能,將節省ua 很多時間在基本的東西上。 https://github.com/Microsoft/WindowsTemplateStudio

經過大量的谷歌搜索,我找到了這里的路。 老實說,我得出了與 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 的一個實例進行引用。

希望這可以幫助某人並祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM