namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
//用c#内嵌的有返回值委托创建委托,并用lambda表达式写出函数体
Func<int, int, string> delFunc = (a, b) => { return (a + b).ToString(); };
//调用异步委托在线程池当中调用线程做计算
IAsyncResult result = delFunc.BeginInvoke(1, 2, myAsyCallBack, "123");
Console.ReadKey();
}
static private void myAsyCallBack(IAsyncResult ar)
{
//先将参数强转成结果类型,由于IAsyncResult 是AsyncResult 的接口类型,因此可以强转
AsyncResult result2 = (AsyncResult)ar;
//通过AsyncDelegate字段取原装委托
var del = (Func<int, int, string>)result2.AsyncDelegate;
//调用endinvoke来取返回值
string data = del.EndInvoke(result2);
//取传入参数
string para = (string)result2.AsyncState;
Console.WriteLine("回调函数返回值: " + data);
Console.WriteLine("参数值: " + para);
}
}
}
c# 关于异步委托的创建方式,回调函数的写法以及取得返回值的方法
最新推荐文章于 2023-12-12 22:25:14 发布