2015-08-28 111 views
0

我想做後臺任務,每天運行一次,但不工作,我試過用TimeTrigger,但沒有工作。我如何做背景任務,每天早上運行一次?

我嘗試SystemTrigger但不工作

// var trigger = new TimeTrigger(15, false); 
    var trigger = new SystemTrigger(SystemTriggerType.TimeZoneChange, false); 
    var condition = new SystemCondition(SystemConditionType.InternetAvailable); 

    var tarefa = await RegistrarTarefasSegundoPlanoAsync.RegisterBackgroundTask(typeof(SalvaImagemTask).FullName, "SalvaImagemTask", trigger, condition); 
+0

什麼不適用於TimeTrigger? - 這應該是這種任務的最佳選擇。 – Romasz

+0

Timetrigger如何每天工作一次? –

+0

您是否曾嘗試將其設置爲每隔幾個小時運行一次? – Romasz

回答

1

你可以通過實現一些邏輯來做到這一點。

  1. 註冊後臺任務
  2. 充分利用BackgroundTask在每隔1小時即像這個60分鐘間歇運行:

    BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder { Name = "MyBackgroundTask", TaskEntryPoint = "MyRuntimes.BackgroundTask" }; taskBuilder.SetTrigger(new TimeTrigger(60, false)); taskBuilder.SetTrigger(trigger); BackgroundTaskRegistration myFirstTask = taskBuilder.Register();

  3. 裏面你BackgroundTask,檢查你的系統的本地時間,如果它的早晨時間,你可以開始你想要的功能。

這是我能想到的最佳選擇,因爲您無法在早上運行您的後臺任務。但邏輯上,您每隔1小時就會運行一次後臺任務,並在早晨時間檢查情況。

希望你有我的邏輯。 謝謝!

+0

好,我做到了。 :)但應用程序日曆通知12PM。我如何做到這一點?有可能在後臺任務中創建一個後臺任務,並且只剩下一個小時到上午的時間? –

+0

後臺任務中的後臺任務?這聽起來很有趣。給它一個試試:) ..還有另一種方法來確切地在12點通知你。你可以使用推送通知。當您在手機中收到推送通知時,會有一個選項立即觸發後臺任務。 –

+0

我能想到的另一種方法是:如您所知,最小背景觸發時間爲15分鐘。這意味着後臺任務將在0-15分鐘和每個時間間隔內啓動。你可以做的是,使用do-while循環在15分鐘內連續運行15次或15次以上的BackgroundTask。這意味着您的後臺任務會連續檢查當前時間。如果它與12PM匹配,則可以顯示通知。希望你明白我的觀點。 :) –

-1

有就是得到的回答here一個非常類似的問題。它使用Windows Scheduled Tasks

+0

關於Windows RT的問題:) –

+0

這個答案不僅僅是一個回答而是一個評論。 –

+0

[This?](https://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh977055.aspx) –

相關問題