我可以手动启动Win 8后台任务吗?

时间:2012-11-29 15:30:00

标签: c# windows windows-8

我正在使用C#作为我的应用程序,并且在用户登录他的PC之后,实时磁贴开始更新至关重要。目前,更新的开始时间不早于15分钟,因为我正在使用时间触发器进行实时磁贴更新。有没有办法手动触发任务,还是有其他方法可以让我的实时磁贴从用户登录系统时开始更新?

3 个答案:

答案 0 :(得分:0)

您不能手动调用后台任务,但您可以使用后台任务运行的代码创建一个共享库,并直接从后台任务调用它。然后,只要您想从应用程序手动触发该代码,就可以手动调用该代码。

答案 1 :(得分:0)

UserPresent SystemTriggerType可能是您的追随者。我正在考虑这样做的方式是同时具有时间和系统触发器,因此每15分钟以及当用户解锁设备时。 我不认为你使用SystemTrigger tho可以获得尽可能多的CPU时间,但它总比没有好 http://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.background.systemtriggertype.aspx

答案 2 :(得分: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"); 
    }