c# 委托实现异步回调是怎么一回事?

 我来答
ryan01
2011-04-21
知道答主
回答量:41
采纳率:0%
帮助的人:22.9万
展开全部
委托实现异步回调,
首先 就是 启动异步调用请求
及调用 SomeDelegate.BeginInvoke;
重点就在BeginInvoke 里面的最后的两个参数
倒数第二个 是 在 开始异步之后 需要执行的方法名
该方法要满足 委托类型 AsyncCallback 的参数 签名,也就是
返回值类型是 Void 空, 要传入一个 IAsyncResult 类型(是个接口) 或者实现该接口的 类型 的参数; 并且这个方法是 结束异步的方法,在其内部要调用 EndInvok 方法,释放资源,返回计算结果。

倒数第一个 参数 虽然是一个object类型的参数,可以传入任何类型,但是 是用来传入 启动异步调用的委托自身,方便 异步方法 (就是倒数第二个参数)访问。
具体的可以参照 C#高级编程 中第19章 Thread
MSDN :http://msdn.microsoft.com/zh-cn/library/2e08f6yc(v=VS.80).aspx
fog16grx
2011-04-08 · TA获得超过1293个赞
知道小有建树答主
回答量:553
采纳率:0%
帮助的人:0
展开全部
义一个委托,该委托于你需要异步执行的方法的签名一定要一样,
另外 在定义委托时,还可以加上两个可选的参数
意思就是说
你的方法签名 public string TestMethod(int i)
你的委托这样 public delegate string AsyncMethod(int i);
在程序里面,你可以这样用
实例化你的委托:
// ad.TestMethod 假设TestMethod方法包含在一个ad的对象中
AsyncMethod caller = new AsyncMethod(ad.TestMethod);
IAsyncResult Result = caller.BeginInvoke(1,null/*回调*/,new StateObject() /*StateObject是你的对象*/);

这个你调用会返回IAsyncResult 对象 在上面 就是Result
你可以这样获得你的对象
Result.AsyncState 但是必须强制转换。

你可以在MSDN中看一下
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
QQNJQQ
2011-04-07 · 超过12用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:0
展开全部
委托相当于函数指针,如果你不懂C,当我没说
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式