2012-11-29 52 views
0

我正在使用C#作爲我的應用程序,它的重要意義在於活動磁貼在個人計算機登錄後立即開始更新。目前,更新開始時間不得早於15分鐘,因爲我正在使用時間觸發器進行實時磁貼更新。有什麼辦法可以手動觸發任務,或者有什麼其他方式可以讓我的活動磁貼從用戶登錄系統時開始更新?我可以啓動Win 8後臺任務手冊

+0

我不相信有一種方法可以立即運行您的後臺任務。但是,可以使用週期性磁貼更新或推送通知在用戶登錄後更新實時磁貼。 –

回答

0

您不能手動調用後臺任務,但可以簡單地使用運行後臺任務的代碼創建共享庫,然後直接從後臺任務調用它。然後,只要您想從應用程序中手動觸發該代碼,就可以手動調用該代碼。

+0

那麼我的問題是,當我啓動計算機並登錄到它時,該任務在15分鐘後啓動,因爲計時器僅在15分鐘時觸發任務。那麼有沒有辦法在人登錄時觸發一次,然後每15分鐘一次? – user1801229

+0

是的,你可以做到這一點,請看這裏:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh977056.aspx。您需要使用SessionConnected系統事件。儘管如此,您的應用程序仍需要作爲鎖屏應用程序運行。 – Flavien

+0

好的非常感謝你我會嘗試:) – user1801229

0

更好的DispatcherTimer可以幫助你火了,在設定的時間間隔的事件。您可以將代碼添加到App()構造函數中:

// _dispatcherTimer is probably a class level variable. 
    DispatcherTimer _dispatcherTimer; 


    // How often 
    uint _DoSomethingInterval = 500; 

    // Set up a DispatchTimer 
    _dispatcherTimer = new DispatcherTimer(); 
    _dispatcherTimer.Tick += DoSomething; 

    // If you like lambdas, do this 
    //_dispatcherTimer.Tick += (sender, object) => 
    // { Debug.WriteLine("time passed so do something"); } 


    _dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 0, (int)_desiredReportInterval); 

    // The callback for the timer 
    private void DoSomething(object sender, object args) 
    { 
     Debug.WriteLine("time passed so do something"); 
    }