Sliverlight WCF异步调用问题。

zation2008 2012-09-30 02:55:42
在调用类似GetNameAsync()这种方法时。没有等待获取数据完成就执行下一步代码了,求教用什么方法才能等他获取完数据后再继续执行。就是同步= =

或者不需要同步,只要能达到需要的效果就行。

因为下面的代码马上就要用到获取到的数据,之前报了N次未将对象引用到对象的实例- -

虽然我看了那么多帖子但是以我肚子里的水分实在是看不懂。而且英文捉鸡。
所以抱歉又提了这个老生常谈的问题。
...全文
182 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zation2008 2012-10-06
  • 打赏
  • 举报
回复
thx too much.
大概了解了
  • 打赏
  • 举报
回复
把“后边的代码”写到completed事件处理程序中,这是个很简单的回答。

如果没有事件,我们总要找到从子线程回调自定义方法的地方来编程,而不是写出顺序程序。

这是异步多线程编程的模式,请牢记。
  • 打赏
  • 举报
回复
几年来,对于c#的各个版本的许多新特性,我都是非常兴奋地首先去试用。然后当我看到c#5版本的"async" 和 "await"时,我第一次感到对c#的担心。因为异步多线程编程是需要程序员把过去在学校里学的低级的顺序编程思路彻底抛开的,使用习惯性的思维方式是根本不会、根本理解不了如何调试异步多线程程序的。因此假设c#去试图“娇惯”程序员用顺序程序的思路去设计异步程序,很可能搞砸了c#语言本身的声誉,很可能将来我不得不去推荐大家去学习其它清晰地展现异步多线程编程特殊架构的那些编程语言。

不要用顺序程序的思路去写异步多线程程序。最好也要避免使用那些试图混淆这种差别的编程语言。这就好像你通过学习c#来唾弃c语言里的许多低级功能一样,我们很可能将来不得不推荐程序员学习心得编程语言来唾弃c#5里边的await和async关键字。
  • 打赏
  • 举报
回复
“下面的代码”你需要移到Completed事件处理方法中去执行,而不是写到GetNameAsync的下面。

异步多线程程序就是这样的,你需要首先从心里就改变原来的设计观念。silverlight这类程序到处都是异步多线程操作,因此当你习惯于同步阻塞程序思路时会给程序轻易造成无数“死机”现象。虽然我们很清楚怎样去阻塞线程,但是其实阻塞式程序是异步多线程编程的大忌,这种程序需要它几率不足百分之零点几,剩下百分之九十九点几的时候你都应该改变原来的设计观念、习惯于去在事件回调或者其它委托回调中去处理“下面的代码”。

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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