Asynchronous Windows Phone 7-控制内容和异步请求

Asynchronous Windows Phone 7-控制内容和异步请求,asynchronous,windows-phone-7,Asynchronous,Windows Phone 7,我认为这是微不足道的,但我找不到答案:( 我有一个WP7页面,它承载一些控件,我想用从web请求读取的日期填充这些控件。 web请求通过以下方式完成: WebClient wr = new WebClient(); wr.DownloadStringCompleted += new DownloadStringCompletedEventHandler(Event_DownloadStringCompleted); wr.DownloadStrin

我认为这是微不足道的,但我找不到答案:( 我有一个WP7页面,它承载一些控件,我想用从web请求读取的日期填充这些控件。 web请求通过以下方式完成:

        WebClient wr = new WebClient();
        wr.DownloadStringCompleted += new DownloadStringCompletedEventHandler(Event_DownloadStringCompleted);
        wr.DownloadStringAsync(new Uri(theURL));
这在Page_Loaded事件中调用。 在事件_DownloadStringCompleted中,我尝试将新值分配给TextBlocks,它完全忽略此命令

我做错了什么?我是否需要找到其他事件来启动web请求?或者是否可以在web请求完成后“刷新”页面


谢谢

您的事件\u DownloadStringCompleted未在UI线程上调用,因此它无法更新UI。请使用Dispatcher在正确的线程上重新调用。例如


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

您可能希望在调用页面的方法时启动web请求,而不是在触发页面的加载事件时启动,尽管我认为这不会解决您的问题


是否确实调用了DownloadStringCompleted事件的处理程序?如果是,DownloadStringCompletedEventArgs的Error属性是否设置为非空值?

存在与公测版中引入的某些显示驱动程序相关的已知显示/刷新问题。在某些情况下,这与ATI adapt相关有些人在更新驱动程序后报告成功

这可能会影响刷新结果

您还可以根据WPDT系统要求检查您的驱动程序是否符合directx10最低要求和WDDM1.1。如果不符合要求,请升级驱动程序(再次)、更换适配器,或者在运行解决了几个模糊问题的Vista时升级到Win7


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

我理解这一解释,但我在实现它时遇到了一些问题-您认为我应该在哪里调用BeginInvoke?在阅读完需要显示的结果后立即调用?或者何时调用?谢谢!我确实实现了代理回调,并且在调试中可以看到代码已执行,但对UI没有影响。当我使用模拟器底部的pad“返回”时,我可以看到正确的值……我缺少一些东西:)我尝试在OnNavigatedTo事件中移动代码,但得到了相同的结果(如预期)。已调用该事件,没有错误。