浅谈AsyncState与AsyncDelegate使用的异同
2024-09-04 08:20:55
对于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.
最新文章
- 包含块( Containing block ) 转自W3CHelp
- 加快ArcGIS Server创建缓存速度,CachingTools的实例数
- Reflection和Expression Tree解析泛型集合快速定制特殊格式的Json
- beego中orm关联查询使用解析
- windows下AppServ安装php的memcached扩展
- poj 2182 树状数组
- python实现TCP/UDP通信
- 淘宝地址爬取及UI展示
- Android ADB Server启动失败
- Windows下安装Redis客户端
- .netframe初识
- UncaughtExceptionHandler
- Change Jenkins time zone
- CGI编程学习
- [Vue warn]: Do not mount Vue to <;html>; or <;body>; - mount to normal elements instead.
- bzoj千题计划114:bzoj1791: [Ioi2008]Island 岛屿
- WebSocket重连reconnecting-websocket.js的使用
- kafka describe 显示结果解释
- C/C++ Volatile关键词深度剖析
- Mysql存储Emoji表情[为何utf8不能存储以及如何使Mysql能够存储Emoji表情]
热门文章
- 编译android源码官方教程(2)建立编译环境「linux &; mac osx」
- SqlSever基础 datepart函数 返回现在几点了
- 一维条码打印的C#实现(Code128)
- Exchange 2010 邮箱大小限制原则
- linux内核中的GPIO系统之(2):pin control subsystem
- BZOJ 3241: [Noi2013]书法家
- Error 18000 during outlook 2011 rebuild
- FreeSWITCH 1.6关于视频通话的一些测试
- Shell概述
- Linux基础※※※※访问Windows共享文件夹