using System; using System.Threading; public delegate string AsyncDelegate(int callTime); class Test { static void Main(string[] args) { AsyncDemo ad = new AsyncDemo(); AsyncDelegate dlgt = new AsyncDelegate(ad.TestMethod); AsyncDelegate dlgt1 = new AsyncDelegate(ad.TestMethod1); //AsyncDelegate[] dlgts={dlgt,dlgt1}; Object[] obj = {dlgt,12}; dlgt.BeginInvoke(3000, new AsyncCallback(CallbackMethod), obj); Console.WriteLine("主线程继续工作。。。"); Thread.Sleep(1000); Console.WriteLine("主线程工作完成,执行了1秒,等待异步调用完成。。。。"); Console.ReadKey(); } static void CallbackMethod(IAsyncResult ar) { Object[] obj=(Object[])ar.AsyncState; AsyncDelegate dlgt = (AsyncDelegate)obj[0]; int iTest = (int)obj[1]; string result = dlgt.EndInvoke(ar); Console.WriteLine("异步调用完成,{0}!", result); Console.WriteLine("ar.AsyncState value:{0}",iTest); } } class AsyncDemo { public string TestMethod(int callTime) { Console.WriteLine("异步调用方法开始。。。"); Thread.Sleep(callTime); return "方法完成需要的时间是" + callTime / 1000 + "秒"; } public string TestMethod1(int time) { Console.WriteLine("hello"); Thread.Sleep(time); return "方法完成需要的时间是" + time / 1000 + "秒/s"; } }
C#异步调用案例 BeginInvoke用法
最新推荐文章于 2019-08-06 14:14:00 发布