2011-11-10 46 views
3

我真的需要你的帮助,因为我有一个令人沮丧的问题。我正在下载我的定期代理(OnInvoke)中的数据。工作正常,但每天晚上从我下载数据的网站都没有数据可供下载。如果发生这种情况,我希望活动图块保持原样(而不是空白)与当前数据,而不会更新。然后在一两个小时后有数据下载并解析更新应该继续。防止后台任务更新LiveTile

我已经试过这个,但是当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(); 
} 

我也试过下面的代码peice的,但已停止我的后台任务,我不得不重新开始我的应用程序,以重新启用它。为什么?

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

所以,当没有数据被解析瓷砖应该保持,因为它是和一两个小时后,当数据被下载的一切都应该恢复正常时thetile beeing更新。

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

回答

2

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

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

+0

谢谢你calum,它现在工作得很好!在我的OnInvoke中,我有一个HTTPWebRequest,如果这一次超时,我打电话给NotifyComplete。我是否应该添加回报,因为我不希望代码继续运行? – John

+0

很难说没有看到代码。只要确定它是否超时,在调用NotifyComplete之后不会再有代码被击中。对待NotifyComplete就像Environment.Exit - 在调用它之后,当前方法在应用程序终止之前完成。 – calum