首页 新闻 会员 周边

C# 里异步方法中的Begin***和End***是怎么用的呢?

0
[已解决问题] 解决于 2012-11-07 10:51

那个End***是干嘛用的?是在执行完Begin***之后要做的事就写在End***里吗?

那么回调方法又是怎么用的?它和End***之间有什么区别?

hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2012-09-10 14:30
< >
分享
最佳答案
0

在BeginXXX和EndXXX体系里,回调是用于通知操作执行完成的。

EndXXX阻塞并等待操作执行完成。

在下面的代码示例中,你可以看到 int i=0语句必须等到异步执行完毕后才能执行:

BeginX();  // 发起异步调用

EndX();   // 阻塞当前线程,等待执行完毕

int i =0;  // 其它语句。

 

在下面代码中,异步操作和int i =0 是并行执行的。

BeginX( callback);  // 发起异步调用;

int i =0;  // 其它语句。

 

对于这类问题,我劝你写段代码,然后自己用调试器反复调试,搞清楚执行流程。光看书,光讲理论是没用的。

奖励园豆:5
Launcher | 高人七级 |园豆:45045 | 2012-09-10 14:46

它就"EndXXX阻塞并等待操作执行完成。"这一个功能吗?传那个IAsyncResult类型的东西给他做什么用的啊?谢谢..

hexllo | 园豆:318 (菜鸟二级) | 2012-09-10 14:48
Launcher | 园豆:45045 (高人七级) | 2012-09-10 14:51
其他回答(3)
0

如果这个异步方法有返回值的话,返回值要在End***里才能获取到的.

zhangweiwen | 园豆:904 (小虾三级) | 2012-09-10 14:32
0

cnblog里面搜搜一大堆了http://www.cnblogs.com/nokiaguy/archive/2008/07/13/1241817.html

nickycookie | 园豆:106 (初学一级) | 2012-09-11 12:03
0

以委托的Invoke为例
begininvoke 返回一个判断异步是否完成的对象R,或者提供一个回调委托
endInvoke 通过对象R获取异步执行结果数据

DHclly | 园豆:206 (菜鸟二级) | 2021-03-15 15:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册