//委托调用方法
Func<string,string,string,string> myfunc= (p1,p2,p3)=>{
Console.WriteLine("\n\n****************委托调用方法 Start 线程ID:{0}***************", Thread.CurrentThread.ManagedThreadId);
Console.WriteLine(p1);
Console.WriteLine(p2);
Console.WriteLine(p3);
Console.WriteLine("****************委托调用方法 End 线程ID:{0}***************", Thread.CurrentThread.ManagedThreadId);
return $"这是委托调用的方法的返回值";
};
//回调函数
AsyncCallback callback = t => {
Console.WriteLine("\n\n****************回调函数 Start 线程ID:{0}***************", Thread.CurrentThread.ManagedThreadId);
AsyncResult t1 =t as AsyncResult;
////AsyncDelegate方式还原委托对象
Func<string, string, string, string> func1 = t1.AsyncDelegate as Func<string, string, string, string>;
string emp = myfunc.EndInvoke(t);
Console.WriteLine("****执行回调******* " + emp);
Console.WriteLine("****************回调函数 End 线程ID:{0}***************", Thread.CurrentThread.ManagedThreadId);
};
myfunc.BeginInvoke("委托方法入参1", "委托方法入参2", "委托方法入参3", callback, myfunc);
for(int i = 0; i < 20; i++)
{
Console.WriteLine("\n****************主线程运算中... 线程ID:{0}***************", Thread.CurrentThread.ManagedThreadId);
}