首页 > 代码库 > 浅谈AsyncState与AsyncDelegate使用的异同
浅谈AsyncState与AsyncDelegate使用的异同
对于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使用的异同
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。