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

时间:2010-09-04 15:19:15

标签: asynchronous windows-phone-7

我认为这是微不足道的,但我找不到答案:( 我有一个WP7页面,它托管了一些控件,我希望用Web请求读取日期。 Web请求完成:

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

,这是在Page_Loaded事件中调用的。 在Event_DownloadStringCompleted中,我尝试将新值分配给TextBlocks,完全忽略此命令。

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

由于

3 个答案:

答案 0 :(得分:1)

您的Event_DownloadStringCompleted未在UI线程上调用,因此无法更新UI。使用Dispatcher在右侧线程上回调。 e.g。

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

答案 1 :(得分:0)

您可能希望在调用页面的OnNavigatedTo()方法时启动Web请求,而不是在页面的Loaded事件被触发时,但我认为这不会解决您的问题。

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

答案 2 :(得分:0)

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

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

根据WPDT系统要求,您还可以检查驱动程序是否符合directx10和WDDM1.1标准。如果没有,驱动程序升级(再次),适配器更改或升级到Win7,如果运行Vista已解决了几个模糊的问题。

此外,如果您有此选项,请尝试使用其他配置在另一台PC上运行。