Dispatcher.BeginInvoke使界面卡死?怎么在异步方法中更新UI

Dispatcher.BeginInvoke使界面卡死?如何在异步方法中更新UI。
本帖最后由 chyun7290 于 2013-12-20 15:53:59 编辑
前面有问大家为什么用:
page.Dispatcher.BeginInvoke(delegate()
                    {
                      NavigationService.Navigate(uri); 
                    });
NavigationService.Navigate时卡在界面,而不转向下个页面,我怀疑是Dispatcher.BeginInvoke使用有误是界面卡住。
我是在异步方法中调用它更新UI的。

Data.cs
public static MainPage page;
static async void receivingdata()
{
  //省略...
  page.Dispatcher.BeginInvoke(delegate()
                    {
                      NavigationService.Navigate(uri); 
                    });
}

Mainpage.xaml.cs
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    Data.page = this;
    Data.receivingdata();
}

请问如果这样写,该怎样更新UI.
------解决方案--------------------
OnNavigatedTo里边再跳转是不是太急了点,试着在其中某个控件的Load事件里跳转下看看
------解决方案--------------------
Dispatcher.BeginInvoke使界面卡死?怎么在异步方法中更新UIOnNavigatedTo里面就调整,这个页面还有什么意义,不如直接在上一个页面做判断了
------解决方案--------------------
在非UI线程更新UI:
Deployment.Current.Dispatcher.BeginInvoke(() =>NavigationService.Navigate(uri));
------解决方案--------------------
引用:
在非UI线程更新UI:
Deployment.Current.Dispatcher.BeginInvoke(() =>NavigationService.Navigate(uri));

学习了
------解决方案--------------------
引用:
在非UI线程更新UI:
Deployment.Current.Dispatcher.BeginInvoke(() =>NavigationService.Navigate(uri));

学习了。