3

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

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

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

4

1 回答 1

2

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

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

于 2011-11-10T16:14:23.067 回答