Проблема:
Я реализовал Stopwatch
, который запускается, и значение добавляется к живой плитке. Но когда я надгробие или закрываю приложение, секундомер перестает работать.
Таким образом, возникает проблема, когда начальное значение прошедшего времени секундомера обновляется до живой плитки только после закрытия приложения.
Вопрос:
Мне интересно, какие варианты доступны для запуска секундомера, когда приложение было отключено, и последующего периодического вызова метода CreateLiveTile с обновленным значением секундомера?
Раньше я не пробовал использовать этот тип функций, поэтому я ищу отзывы о том, что эта платформа может предложить для достижения этого.
Код:
По сути, это код, который запускает секундомер, и отдельный метод CreateLiveTile()
, который создает новую живую плитку с прошедшим временем в качестве параметра:
private async Task ShowTimerConfirmationDialog()
{
//Set timer for current parking tag
SetParkingTagTimer();
//Create the live tile
CreateLiveTile();
}
private void SetParkingTagTimer()
{
//set timer to current elapsed time
StopWatch.Start();
// Get the elapsed time as a TimeSpan value.
var ts = (SelectedParkDuration ?? StopWatch.Elapsed) - StopWatch.Elapsed;
// Format and display the TimeSpan value.
ElapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
}
private void CreateLiveTile()
{
var tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquare150x150PeekImageAndText01);
var tileImage = tileXml.GetElementsByTagName("image")[0] as XmlElement;
tileImage.SetAttribute("src", "ms-appx:///Assets/Logo.scale-140.png");
var tileText = tileXml.GetElementsByTagName("text");
(tileText[2] as XmlElement).InnerText = "Time remaining:";
(tileText[3] as XmlElement).InnerText = " " + ElapsedTime;
var tileNotification = new TileNotification(tileXml);
TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);
}
}