2016-10-07 17 views
1

我使用WindowsRuntimeComponent在UWP中創建了一個後臺任務。並使用定時器在UWP App「OnNavigatedTo」事件中註冊BackgroundTask。 它工作正常。在這裏,我的問題是,這是註冊BackgroundTask的唯一方法嗎?或者我們可以像Windows服務一樣託管它?.so它可以在機器以UWP App啓動時啓動時自動運行。我們能夠將UWP BackgroundTask(WindowsRuntimeComponent)作爲Windows服務託管嗎?

任何人都可以幫助達到這個目的嗎?

問候 蘇雷什ķ

+0

選中此:https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a-background-task?f=255&MSPPError=-2147217396和這個:http ://堆棧溢出。com/questions/32229375/how-to-start-background-task-at-boot -windows-store-app – Kinani

回答

1

,這樣當機器出UWP應用程序開始啓動它可以自動運行。

有兩種方法可以實現後臺任務:進程內和進程外。在Windows 10(版本1607)中引入了進程內後臺支持,以簡化後臺任務的編寫。

對於單進程後臺任務,它的生命週期受應用程序生命週期的影響,如您所關注的,重啓機器後,您需要啓動uwp應用程序來運行任務。更多詳情請參閱Create and register a single process background task。 但是,對於多進程後臺任務,一旦使用時間觸發器註冊後臺任務,它將一直運行,直到您取消註冊爲止。重啓機器後,任務將自動啓動,無需啓動應用程序。更多細節請參閱Create and register a background task that runs in a separate process

當您爲後臺任務TaskEntryPoint創建windows runtime component時,我認爲您創建的後臺任務是單獨的進程。因此,您可以測試它,看看後臺任務是否可以在機器重新啓動後運行,而無需啓動應用程序(請注意,您沒有設置可能會阻止任務的任何條件)。例如,我用時間觸發器編寫了一個單獨的進程後臺任務,每15分鐘將當前時間寫入文本文件。在我關閉機器並在第二天啓動它之後,它將繼續將數據寫入文件,而無需啓動應用程序。這裏是我的結果部分:

10/10/2016 5:47:25 PM second activity10/10/2016 6:02:25 PM first activity 
10/10/2016 6:02:25 PM second activity10/11/2016 9:04:19 AM first activity 
10/11/2016 9:04:19 AM second activity10/11/2016 9:27:44 AM first activity 
10/11/2016 9:27:44 AM second activity10/11/2016 9:42:44 AM first activity 

更多關於後臺任務的詳細信息,請參考Guidelines for background tasksofficial sample

這是註冊BackgroundTask的唯一方法,還是我們可以像Windows服務一樣託管它?

Windows服務具有很多特徵,例如沒有UI並且只要Windows正在運行就運行。對於這些,聽起來像應用服務具有類似的特徵。應用程序服務作爲後臺任務來實現。這使前臺應用程序能夠調用另一個應用程序中的應用程序服務,以在幕後執行任務。在您的計算機上部署應用服務提供商後,您可以隨時從客戶端應用調用後臺任務,而無需啓動服務提供商應用。但是這個後臺任務將與您的前臺客戶端應用程序具有相同的生命週期,這意味着如果您未啓動客戶端應用程序,則應用程序服務無法連接。更多詳情請參考Create and consume an app service

總而言之,單獨過程中的後臺任務可以滿足您的要求。

+0

@Suresh K有沒有更新? –