即使应用程序在后台或手机中运行,如何在Windows Phone中锁定计时器

时间:2014-01-12 09:03:54

标签: c# windows-phone-8 timer windows-phone-7.1

我在使用

实现的Windows Phone 7.1应用程序中有一个计时器
DispatcherTimer _timer;

初始化为

Sample._timer = new DispatcherTimer();
Sample._timer.Interval = new TimeSpan(0, 0, 1);
Sample._timer.Tick += new EventHandler(Timer_Tick);
Sample._timer.Start();

    private void Timer_Tick(object sender, EventArgs e)
    {

        double newValue = Sample.Value + 1.686;
        if (newValue >= 100)
            newValue = 0;
        Sample.Value = newValue;
        txtDigitalClock.Text = GetTime();
    }
    public string GetTime()
    {
        time += TimeSpan.FromSeconds(1);
        return string.Format("{0:D2}:{1:D2}:{2:D2}", time.Hours, time.Minutes, time.Seconds);
    }

这在正常情况下工作正常

这是我的问题

1)当手机处于锁定状态(屏幕已定位)时,计时器未运行

2)应用程序在后台运行时,计时器未运行(当您按下Windows手机中的开始按钮时,应用程序将转到后台)。

任何帮助将不胜感激..

4 个答案:

答案 0 :(得分:1)

要在锁定屏幕下运行您的应用程序(和计时器),您必须禁用ApplicationIdleDetectionMode 如果你没有禁用闲置,你的应用程序将停止,因为它在MSDN处说:

This event (Deactivation) is also raised if the device’s lock screen is engaged, unless application idle detection is disabled.

如果你想在后台运行Timer(例如在按下Start buton后),你将无法执行此操作,因为MSDN说:

When the user navigates forward, away from an app, after the Deactivated event is raised, the operating system will attempt to put the app into a dormant state. In this state, all of the application’s threads are stopped and no processing takes place, but the application remains intact in memory.

更大的问题是当你的应用程序被逻辑删除时 - 应用程序不会在内存中占用(全部)。

您可以尝试使用Background Agents完成工作,但这是其他故事。

当您的应用程序禁用空闲或使用后台代理时,请记住Certification requirements

类似的问题是here

答案 1 :(得分:0)

我在谷歌上搜索了你的问题(因为我没有进入Winphone)并找到了

http://stackoverflow.com/questions/8352515/how-can-i-run-my-windows-phone-application-in-background

显然,这根本不可能。 我希望这能回答你的问题

答案 2 :(得分:0)

请写下行定时器初始化

ApplicationIdleModeHelper.Current.HasUserAgreedToRunUnderLock = true;

答案 3 :(得分:0)

我通过在隔离存储上保存值的起始计时器来解决此问题

 IsolatedStorageSettings.ApplicationSettings.Add("TimerStarted",DateTime.UtcNow);

当应用程序在转到后台后重新激活时,我将在隔离存储中查找此值并使用它来显示计时器