2010-09-04 33 views
0

我认为这是微不足道的,但我找不到答案:( 我有一个WP7页面,托管一些控件,我想填充从Web请求中读取日期 该网站请求与完成:。Windows Phone 7 - 控制内容和异步请求

 WebClient wr = new WebClient(); 
     wr.DownloadStringCompleted += new DownloadStringCompletedEventHandler(Event_DownloadStringCompleted); 
     wr.DownloadStringAsync(new Uri(theURL)); 

,这是所谓的PAGE_LOADED事件 在Event_DownloadStringCompleted我尝试分配到的TextBlocks新值,完全忽略这个命令

我是什么做错了吗?我是否需要找到不同的事件来启动Web请求美东时间?或者是否可以在Web请求完成后“刷新”页面?

感谢

回答

1

你Event_DownloadStringCompleted不叫UI线程上,因此它不能更新UI。使用分派器在右侧线程中回叫。例如

page.Dispatcher.BeginInvoke(delegate(){textBlock.Text =“done!”;});

+0

我理解这个解释,但是我在实现它时遇到了一些问题 - 您认为我应该在哪里调用BeginInvoke?阅读结果后,我需要显示?或什么时候?谢谢! – ila 2010-09-06 08:07:18

+0

好吧,我确实实现了委托回调,并且我可以在调试中看到代码已执行,但对UI没有任何影响。当我使用模拟器底部的键盘导航“返回”时,我可以看到短暂的正确值...我错过了一些东西:) – ila 2010-09-06 15:18:30

0

当页面的OnNavigatedTo()方法被调用时,您可能想要启动web请求,而不是当页面的Loaded事件被触发时,尽管我认为这不会解决您的问题。

您确定您的DownloadStringCompleted事件处理程序被调用吗?如果是这样,DownloadStringCompletedEventArgs的Error属性是否设置为非空值?

+0

我试图在OnNavigatedTo事件中移动代码,但我有相同的结果(如预期)。该事件被称为,没有错误。 – ila 2010-09-06 15:26:29

0

在公开测试版中引入了一些与显示驱动程序相关的显示/刷新问题。这在某些情况下与ATI适配器有关。有些人在驱动程序更新后报告成功。

这可能会影响您的刷新结果。

此外,您可以检查您的驱动程序是否符合WPDT系统要求的directx10和WDDM1.1。如果没有,驱动程序升级(再次),适配器更改或升级到Win7,如果运行Vista已解决了一些晦涩的问题。

此外,如果您有选择,请尝试在另一台具有不同配置的PC上运行。