C#...正在找一个委托实现异步调用的例子,高手请!

请给一个用委托实现异步调用的例子,要具体的代码,听说这个有点类似于多线程,我想看看它是如何实现的,谢谢你!... 请给一个用委托实现异步调用的例子,要具体的代码,听说这个有点类似于多线程,我想看看它是如何实现的,谢谢你! 展开
 我来答
hoolight
2010-06-27
知道答主
回答量:28
采纳率:0%
帮助的人:22.5万
展开全部
using System;
using System.Threading;

//使用委托调用异步例子
namespace DelegateCallAsynchronousMethods
{

class AsyncDelegatesBlocked
{
public static int Add(int op1, int op2, out int result)
{
Thread.Sleep(3000); // Simulating work
return (result = op1 + op2);
}
public delegate int AddDelegate(int op1, int op2,
out int result);//声明AddDelegate委托

static void Main()
{
int result;
/*定义一个AddDelegate类型委托add,将方法Add绑定到委托实例上*/
AddDelegate add = new AddDelegate(Add);

Console.WriteLine("[Main] Invoking the asynchronous " +
"Add method");

/*BeginInvoke 方法用于启动异步调用。它与您需要异步执行的方法具有相同的参数,还有两个额外的参数
*BeginInvoke 立即返回,不等待异步调用完成。BeginInvoke 返回 IasyncResult,可用于监视调用进度。*/

//定义IAsyncResult接口类型实例iAR
//6, 42, out result为异步执行的方法的参数列表
IAsyncResult iAR = add.BeginInvoke(6, 42, out result,
null, null);

// Here we're simulating doing some work before
// blocking on the Add method's completion.
Console.Write("[Main] Doing other work");
for (int i = 0; i < 10; i++)
{
Thread.Sleep(200);
Console.Write(".");
}

Console.WriteLine(" [Main] Waiting for Add to finish");
/*使用 IAsyncResult.AsyncWaitHandle 获取 WaitHandle,
* 使用它的 WaitOne 方法将执行一直阻塞到发出 WaitHandle 信号,然后调用 EndInvoke。
* 注意:异步调用完成时会发出 WaitHandle 信号,可以通过WaitOne 来等待它*/
iAR.AsyncWaitHandle.WaitOne();

Console.WriteLine("[Main] Add finished, cleaning up");
/*EndInvoke 方法用于检索异步调用结果。调用 BeginInvoke 后可随时调用 EndInvoke 方法;
* 如果异步调用未完成,EndInvoke 将一直阻塞到异步调用完成。
* EndInvoke 的参数包括所需要异步执行的方法的 out 和 ref 参数以及由 BeginInvoke 返回的 IAsyncResult。*/
add.EndInvoke(out result, iAR);

Console.WriteLine("[Main] The result is {0}", result);
Console.ReadLine();
}
}
}
dragon2snow
2010-06-24 · TA获得超过1099个赞
知道小有建树答主
回答量:1150
采纳率:0%
帮助的人:1138万
展开全部
就是类似VC里的回调
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式