对于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.

最新文章

  1. 包含块( Containing block ) 转自W3CHelp
  2. 加快ArcGIS Server创建缓存速度,CachingTools的实例数
  3. Reflection和Expression Tree解析泛型集合快速定制特殊格式的Json
  4. beego中orm关联查询使用解析
  5. windows下AppServ安装php的memcached扩展
  6. poj 2182 树状数组
  7. python实现TCP/UDP通信
  8. 淘宝地址爬取及UI展示
  9. Android ADB Server启动失败
  10. Windows下安装Redis客户端
  11. .netframe初识
  12. UncaughtExceptionHandler
  13. Change Jenkins time zone
  14. CGI编程学习
  15. [Vue warn]: Do not mount Vue to <html> or <body> - mount to normal elements instead.
  16. bzoj千题计划114:bzoj1791: [Ioi2008]Island 岛屿
  17. WebSocket重连reconnecting-websocket.js的使用
  18. kafka describe 显示结果解释
  19. C/C++ Volatile关键词深度剖析
  20. Mysql存储Emoji表情[为何utf8不能存储以及如何使Mysql能够存储Emoji表情]

热门文章

  1. 编译android源码官方教程(2)建立编译环境「linux & mac osx」
  2. SqlSever基础 datepart函数 返回现在几点了
  3. 一维条码打印的C#实现(Code128)
  4. Exchange 2010 邮箱大小限制原则
  5. linux内核中的GPIO系统之(2):pin control subsystem
  6. BZOJ 3241: [Noi2013]书法家
  7. Error 18000 during outlook 2011 rebuild
  8. FreeSWITCH 1.6关于视频通话的一些测试
  9. Shell概述
  10. Linux基础※※※※访问Windows共享文件夹