2012-11-29 36 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"); 
    }