如何在应用程序最小化或在后台时保持计时器 运行(C# Windows 10 通用应用程序)
How to keep a timer running when app is minised or in the background (C# Windows 10 universal app)
我之前为 Windows Phone 8.1 创建了一个计时器和秒表应用程序,但它不会 运行 在后台或锁屏后。我目前正在为 windows 10 通用应用程序更新此内容,并且可以帮助实现这些功能。
尝试在后台任务中执行此操作可能很诱人,但对于一个简单的问题来说,这是非常笨拙的。
我建议记录他们开始录制的日期时间:
DateTime _startDateTime;
void Start()
{
_startDateTime = DateTime.Now;
}
然后执行您的常规计时代码(大概带有 DispatcherTimer
),这将 运行 每 x 毫秒一个方法:
void UpdateTime()
{
TimeSpan totalTime = DateTime.Now.Subtract(_startDateTime);
// Update UI
}
现在,如果用户最小化应用程序,代码将停止 运行ning,但是当您 return 时,UpdateTime()
中的数学使用的是 [=14] 的绝对值=] 所以不管你是最小化一个小时还是一个星期 - 一旦 UpdateTime()
运行s 它就会正确计算出经过的时间。
除非他们最小化并更改 phone 上的时间,但您对此确实无能为力 ;-)。
我之前为 Windows Phone 8.1 创建了一个计时器和秒表应用程序,但它不会 运行 在后台或锁屏后。我目前正在为 windows 10 通用应用程序更新此内容,并且可以帮助实现这些功能。
尝试在后台任务中执行此操作可能很诱人,但对于一个简单的问题来说,这是非常笨拙的。
我建议记录他们开始录制的日期时间:
DateTime _startDateTime;
void Start()
{
_startDateTime = DateTime.Now;
}
然后执行您的常规计时代码(大概带有 DispatcherTimer
),这将 运行 每 x 毫秒一个方法:
void UpdateTime()
{
TimeSpan totalTime = DateTime.Now.Subtract(_startDateTime);
// Update UI
}
现在,如果用户最小化应用程序,代码将停止 运行ning,但是当您 return 时,UpdateTime()
中的数学使用的是 [=14] 的绝对值=] 所以不管你是最小化一个小时还是一个星期 - 一旦 UpdateTime()
运行s 它就会正确计算出经过的时间。
除非他们最小化并更改 phone 上的时间,但您对此确实无能为力 ;-)。