Dispatcher.BeginInvoke使界面卡死?如何在异步方法中更新UI。

Cherishe7 2013-12-20 11:51:44
前面有问大家为什么用:
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.
...全文
1068 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
#blackheart 2014-02-11
  • 打赏
  • 举报
回复
引用 4 楼 MrIELTS 的回复:
在非UI线程更新UI: Deployment.Current.Dispatcher.BeginInvoke(() =>NavigationService.Navigate(uri));
你这和楼主写法一样的。 卡住估计是因为async/await “嵌套”过多线程混乱了吧。
shanquanshui628962 2014-02-10
  • 打赏
  • 举报
回复
引用 4 楼 MrIELTS 的回复:
在非UI线程更新UI: Deployment.Current.Dispatcher.BeginInvoke(() =>NavigationService.Navigate(uri));
学习了。
wang628962 2014-01-30
  • 打赏
  • 举报
回复
引用 4 楼 MrIELTS 的回复:
在非UI线程更新UI: Deployment.Current.Dispatcher.BeginInvoke(() =>NavigationService.Navigate(uri));
学习了
Jenson钧升 2014-01-29
  • 打赏
  • 举报
回复
在非UI线程更新UI: Deployment.Current.Dispatcher.BeginInvoke(() =>NavigationService.Navigate(uri));
Cherishe7 2013-12-22
  • 打赏
  • 举报
回复
引用 2 楼 lixygibli 的回复:
OnNavigatedTo里面就调整,这个页面还有什么意义,不如直接在上一个页面做判断了
因为receivingdata()省略的代码功能是监听socket,传输数据的功能,当没有收到端口信号的时候界面会一直hang在哪儿,当数据接收完时,我就转向下个页面,然后就转不过去,没有任何异常,也可能是太快了的缘故,我debug的时候是可以过的,但是release就不行了。
愤怒的猪头君 2013-12-20
  • 打赏
  • 举报
回复
OnNavigatedTo里面就调整,这个页面还有什么意义,不如直接在上一个页面做判断了
vbfool 2013-12-20
  • 打赏
  • 举报
回复
OnNavigatedTo里边再跳转是不是太急了点,试着在其中某个控件的Load事件里跳转下看看

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧