c# - 防止后台任务更新 LiveTile

标签 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
}

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

请帮忙,因为现在这是一个表演障碍。提前致谢。

最佳答案

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

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

关于c# - 防止后台任务更新 LiveTile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8081759/

相关文章:

c# - Visual Studio Profiler 显示 DLL 名称而不是函数名称

c# - 用户控件事件处理程序在回发时丢失

windows-phone-7 - 向循环磁贴添加文本 (Windows Phone 8)

c# - Windows Phone 7 中的 sql Ce 更新

c# - WriteableBitmap 内存泄漏?

azure - Windows 8 推送通知,无需将应用程序关联到 Windows 应用商店

c# - 在文件中保存和加载 SQL 数据库

c# - Xamarin.Forms。 XAML Label IsVisible 条件未按预期进行评估

windows-phone-7 - 谁在 Windows Phone 7 中设置线程文化?

c# - 使用 Windows Phone WebBrowser 登录站点