2014-06-05 86 views

回答

22

註冊BackgroundTask很好地解釋了here at MSDN

下面是簡單的例子,在發射和TimeTrigger呈現出吐司,步驟(適用於 - 運行時和Silverlight應用程序):

    1. BackgroungTask必須是Windows運行時組元(無論如果您的應用是運行時或Silverlight)。要添加一個新的,用鼠標右鍵單擊在 在VS解決方案資源管理窗口您的解決方案中,選擇 添加然後 新建項目並選擇 Windows運行時組件

    winRTcomponent

    2.在您的主項目添加引用。

    addreference

    3.指定 聲明Package.appxmanifest文件 - 你需要添加一個 Backgorund任務,標誌着 定時器和指定任務 入口點入口點將爲 Namespace.yourTaskClass(實現 IBackgroundTask) - 添加的Windows運行時組件。

    declaration

    4.您BackgroundTask怎麼能是什麼樣子? - 假設我們想從它發送一個吐司(當然也可以是很多其他的事情):最後

    namespace myTask // the Namespace of my task 
    { 
        public sealed class FirstTask : IBackgroundTask // sealed - important 
        { 
         public void Run(IBackgroundTaskInstance taskInstance) 
         { 
         // simple example with a Toast, to enable this go to manifest file 
         // and mark App as TastCapable - it won't work without this 
         // The Task will start but there will be no Toast. 
         ToastTemplateType toastTemplate = ToastTemplateType.ToastText02; 
         XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate); 
         XmlNodeList textElements = toastXml.GetElementsByTagName("text"); 
         textElements[0].AppendChild(toastXml.CreateTextNode("My first Task")); 
         textElements[1].AppendChild(toastXml.CreateTextNode("I'm message from your background task!")); 
         ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(toastXml)); 
         } 
        } 
    } 
    

    5,讓我們 register our BackgroundTask在主要項目:

    private async void Button_Click(object sender, RoutedEventArgs e) 
    { 
        // Windows Phone app must call this to use trigger types (see MSDN) 
        await BackgroundExecutionManager.RequestAccessAsync(); 
    
        BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder { Name = "First Task", TaskEntryPoint = "myTask.FirstTask" }; 
        taskBuilder.SetTrigger(new TimeTrigger(15, true)); 
        BackgroundTaskRegistration myFirstTask = taskBuilder.Register(); 
    } 
    

編譯,運行,它應該工作。正如你所看到的,任務應該在15分鐘後開始(這個時間會隨着操作系統按照特定的時間間隔安排任務而變化,所以它會在15-30分鐘之間啓動)。但如何更快地調試任務?

有一個簡單的方法 - 去調試位置工具欄,你會看到一個下拉生命週期事件,從中選擇你的任務,它會火(有時打開/關閉下拉刷新它)。

run faster

Here you can download我的示例代碼 - WP8.1的Silverlight應用程序。

+0

謝謝你的回覆,但我已經嘗試過,並且在RT中使用相同的代碼工作,並且在Silverlight中使任務觸發時應用程序崩潰(並且未執行) –

+0

@FelaAmeghino你是否遵循了步驟?我已經添加了[示例代碼](http://1drv.ms/1jYOnzZ) - 也許它會有所幫助。 – Romasz

+1

現在嘗試,它的工作,不知道,我會重試主項目(我昨晚試了,我很困了:P),謝謝:) –

相關問題