2014-01-11 54 views
1

我開發了一個Windows 8應用程序,它涉及通過後臺任務調用Live tile,從而顯示某些RSS源。Live Tiles updation在後臺任務中的一天後開始。如何立即開始

但是,當我安裝應用程序並右鍵單擊圖塊時,按鈕應用程序欄沒有關閉/打開實時圖塊的按鈕,即實時圖塊不起作用。

然而,在一天或12小時內,實時圖塊開始自動更新。

如何使Live tiles在安裝後立即運行?(請記住,這些是要顯示的Rss Feed)。

我的代碼 -

private async void RegisterBackgroundTask() 
    { 
     try 
     { 
      var backgroundAccessStatus = await BackgroundExecutionManager.RequestAccessAsync(); 
      if (backgroundAccessStatus == BackgroundAccessStatus.AllowedMayUseActiveRealTimeConnectivity || 
      backgroundAccessStatus == BackgroundAccessStatus.AllowedWithAlwaysOnRealTimeConnectivity) 
      { 
       foreach (var task in BackgroundTaskRegistration.AllTasks) 
       { 
        if (task.Value.Name == taskName) 
        { 
         task.Value.Unregister(true); 
        } 
       } 

       BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder(); 
       taskBuilder.Name = taskName; 
       taskBuilder.TaskEntryPoint = taskEntryPoint; 
       taskBuilder.SetTrigger(new TimeTrigger(15, false)); 
       var registration = taskBuilder.Register(); 
      } 
     } 
     catch 
     { } 
    } 

回答

1

假設你已經在你的IBackgroundTask的運行方法確實瓷磚更新功能UpdateTile(),使在IBackgroundTask類調用該UpdateTile()方法的公共方法。

public sealed class TileUpdater : IBackgroundTask 
{  
    public async void Run(IBackgroundTaskInstance taskInstance) 
    { 
     // Get a deferral, to prevent the task from closing prematurely 
     // while asynchronous code is still running. 
     BackgroundTaskDeferral deferral = taskInstance.GetDeferral(); 

     // Update the live tile with the names. 
     UpdateTile(await GetText()); 

     // Inform the system that the task is finished. 
     deferral.Complete(); 
    } 
    public async static void RunTileUpdater() 
    { 
     UpdateTile(await GetText()); 
    } 
} 

然後調用RunTileUpdater()在你的應用程序代碼後,

var registration = taskBuilder.Register(); 
TileUpdater.RunTileUpdater(); // <<<<----- 
1

的程序必須是至少一次的後臺任務,以獲得註冊開始。一旦註冊後,您的後臺任務將在指定時間間隔後每次運行。

相關問題