那个End***是干嘛用的?是在执行完Begin***之后要做的事就写在End***里吗?
那么回调方法又是怎么用的?它和End***之间有什么区别?
在BeginXXX和EndXXX体系里,回调是用于通知操作执行完成的。
EndXXX阻塞并等待操作执行完成。
在下面的代码示例中,你可以看到 int i=0语句必须等到异步执行完毕后才能执行:
BeginX(); // 发起异步调用
EndX(); // 阻塞当前线程,等待执行完毕
int i =0; // 其它语句。
在下面代码中,异步操作和int i =0 是并行执行的。
BeginX( callback); // 发起异步调用;
int i =0; // 其它语句。
对于这类问题,我劝你写段代码,然后自己用调试器反复调试,搞清楚执行流程。光看书,光讲理论是没用的。
它就"EndXXX阻塞并等待操作执行完成。"这一个功能吗?传那个IAsyncResult类型的东西给他做什么用的啊?谢谢..
如果这个异步方法有返回值的话,返回值要在End***里才能获取到的.
cnblog里面搜搜一大堆了http://www.cnblogs.com/nokiaguy/archive/2008/07/13/1241817.html
以委托的Invoke为例
begininvoke 返回一个判断异步是否完成的对象R,或者提供一个回调委托
endInvoke 通过对象R获取异步执行结果数据