码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈AsyncState与AsyncDelegate使用的异同

时间:2016-11-21 12:37:40      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:方法   div   lan   toolbar   tar   html   com   参数   iar   

对于AsyncState来说,其MSDN的解释为:得到BeginInvoke方法的最后一个参数。而对于AsyncDelegate来说,其MSDN的解释为:得到异步调用的委托对象。也就是异步调用的委托源。

对于委托的异步调用来说,其BeginInvoke函数无非包括以下内容,BeginInvoke(调用参数,回调函数,Object对象)

如果想利用AsyncState来还原对象的话,这里的Object对象必须是源委托;如果利用AsyncDelegate的话,这里可以为空,可以为源委托。具体区别请看下面的例子:

技术分享
//AsyncState方式还原委托对象
chatDelegate.BeginInvoke(this, e, new AsyncCallback((iar) =>
{

     ChatDelegate thisDelegate = (ChatDelegate)iar.AsyncState;
     thisDelegate.EndInvoke(iar);
}), chatDelegate);

 //AsyncDelegate方式还原委托对象
chatDelegate.BeginInvoke(this, e, new AsyncCallback((iar) =>
{
     AsyncResult ar = (AsyncResult)iar;
     ChatDelegate thisDelegate = (ChatDelegate)ar.AsyncDelegate;
     thisDelegate.EndInvoke(iar);
}), null);
技术分享

 

可以看到,当利用AsyncState时候,最后一个对象必须为源委托;当利用AsyncDelegate的时候,最后一个对象可以为null.

 

引用地址:http://www.cnblogs.com/scy251147/archive/2012/11/26/2789194.html

浅谈AsyncState与AsyncDelegate使用的异同

标签:方法   div   lan   toolbar   tar   html   com   参数   iar   

原文地址:http://www.cnblogs.com/Arlar/p/6084920.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!