当应用程序处于小型或后台时,如何保持计时器运行(C#Windows 10通用应用程序)

当应用程序处于小型或后台时,如何保持计时器运行(C#Windows 10通用应用程序),c#,windows-phone-8.1,windows-10,windows-10-mobile,C#,Windows Phone 8.1,Windows 10,Windows 10 Mobile,我之前为WindowsPhone8.1创建了一个计时器和秒表应用程序,但它不会在后台或锁屏后运行。我目前正在为windows 10 universal app更新此应用程序,并可能需要一些帮助来实现这些功能。在后台任务中尝试这样做可能很有诱惑力,但对于一个简单的问题来说,这非常费力 我建议记录他们开始录制的日期时间: DateTime _startDateTime; void Start() { _startDateTime = DateTime.Now; } 然后执行常规计时代码(可能使用D

我之前为WindowsPhone8.1创建了一个计时器和秒表应用程序,但它不会在后台或锁屏后运行。我目前正在为windows 10 universal app更新此应用程序,并可能需要一些帮助来实现这些功能。

在后台任务中尝试这样做可能很有诱惑力,但对于一个简单的问题来说,这非常费力

我建议记录他们开始录制的日期时间:

DateTime _startDateTime;
void Start()
{
_startDateTime = DateTime.Now;
}
然后执行常规计时代码(可能使用
Dispatchermer
),该代码将每隔x毫秒运行一个方法:

void UpdateTime()
{
TimeSpan totalTime = DateTime.Now.Subtract(_startDateTime);
// Update UI
}
现在,如果用户最小化应用程序,代码将停止运行,但是当您返回时,
UpdateTime()
中的数学使用的是
\u startDateTime
的绝对值,因此无论您最小化一小时还是一周,只要
UpdateTime()
运行,它都会正确计算出运行时间。
除非他们尽量减少和改变打电话的时间,但实际上你对此无能为力;-)

如果可能的话,可以考虑使用后台线程。这对应用程序的秒表端非常有效,但它还有另一个选项作为倒计时,当它达到零时会关闭警报,你对此有什么建议吗?或者你认为这必须是一个后台任务后台任务的问题是,它们只能运行有限的时间,而且只能每隔一段时间运行一次。作为一项工作,您可以尝试创建一个背景音频任务(该任务会持续运行),而不在其中播放任何音乐。但我不能100%确定这是否有效,或者你们是否可以从那个里干杯。你们可以使用
DateTime.Now
,而不是使用
DateTie.UtcNow
,它将解决改变手机时区的问题。