防止后台任务更新LiveTile

时间:2011-11-10 15:15:29

标签: c# windows-phone-7 live-tile

我真的需要你的帮助,因为我有一个令人沮丧的问题。我正在我的定期代理(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
}

因此,当没有数据被解析时,磁贴应保持原样,一小时或两个小时后数据下载时,一切都应该恢复正常,并且更新了./ / p>

请帮助,因为这是一个现在停止的节目。提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

如果在调用NotifyComplete之后添加return语句,则不应更新磁贴。