防止后台任务更新LiveTile

本文关键字:LiveTile 更新 后台任务 | 更新日期: 2023-09-27 18:13:59

我真的需要你的帮助,因为我有一个令人沮丧的问题。我在我的定期代理(OnInvoke)下载数据。工作很好,但每天晚上我下载数据的网站没有数据下载。如果发生这种情况,我希望活动瓷砖保持原样(而不是空的)与当前数据,而不是得到更新。一两个小时后,当有数据需要下载和解析时,应该继续更新。

我已经尝试过了,但是当NotifyComplete被调用后的代码仍然被执行。是不是NotifyComplete应该停止其余的代码被执行?

MatchCollection matchesMyData = rxMyData.Matches(strHTML);
foreach (Match matchMyData in matchesMyData)
{
    GroupCollection groupsMyData = matchMyData.Groups;
    //Code for handling downloaded data
}
if (matchesMyData.Count < 1)
{
    ShellToast toast = new ShellToast();
    toast.Title = "No update: ";
    toast.Content = "Webservice returned no data";
    toast.Show();
    NotifyComplete();
}

我还尝试了下面的代码,但这停止了我的后台任务,我不得不再次启动我的应用程序来重新启用它。为什么?

ShellTile TileToFind = ShellTile.ActiveTiles.FirstOrDefault(x => x.NavigationUri.ToString().Contains("TileID=2"));
if (TileToFind != null && intCount > 0)
{
    //Update the live tile
}

所以,当没有数据被解析时,tile应该保持原样,一两个小时后,当数据被下载时,一切都应该恢复正常,tile被更新。

请帮忙,因为这是一个节目暂停。

防止后台任务更新LiveTile

调用NotifyComplete()不会在执行方法调用后停止代码,它只是让操作系统知道你已经完成了。操作系统应该中止线程,但可能还有时间运行几行代码(文档不清楚调用NotifyComplete的线程是否会立即中止)。

如果在调用NotifyComplete后添加返回语句,则不应该更新tile