异步委托
一、异步委托第一种使用方式
异步调用委托,其实就是使用了一个线程池去执行了委托执行的方法。
1 static void Main(string[] args) 2 { 3 Console.WriteLine("当前主线程:" + Thread.CurrentThread.ManagedThreadId); 4 5 Func<int, int, string> delFunc = new Func<int, int, string>((a, b) => { 6 Console.WriteLine("Asynchronous Delegate:"+Thread.CurrentThread.ManagedThreadId); 7 return ((a + b).ToString()); 8 9 }); 10 11 12 13 IAsyncResult asyncRes= delFunc.BeginInvoke(2,3,null,null); 14 15 16 //string str = delFunc(1, 2); 17 //Console.WriteLine(str); 18 19 Console.ReadKey(); 20 }
二、异步委托第二种使用方式
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 static void Main(string[] args) 2 { 3 Console.WriteLine("当前主线程:" + Thread.CurrentThread.ManagedThreadId); 4 5 Func<int, int, string> delFunc = new Func<int, int, string>((a, b) => { 6 Console.WriteLine("Asynchronous Delegate:"+Thread.CurrentThread.ManagedThreadId); 7 Thread.Sleep(3000); 8 return ((a + b).ToString()); 9 10 }); 11 12 13 14 IAsyncResult asyncRes= delFunc.BeginInvoke(2,3,null,null);//异步调用委托 15 16 //EndInvoke会阻塞当前的线程,直到异步委托指向完成之后,才能继续往下执行。 17 string str =delFunc.EndInvoke(asyncRes); 18 Console.WriteLine(str); 19 20 21 //string str = delFunc(1, 2);同步调用委托 22 //Console.WriteLine(str); 23 24 Console.ReadKey(); 25 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步