.net知识和学习方法系列(十)委托异步调用方法b
接着上一篇说,
IAsyncResult asyncresult1 = dl.BeginInvoke(2, null, null);
中的两个null参数是用来作什么用的呢?
先说第一个,null,它的类型为AsyncCallback的委托,看一下这种委托的定义:
public delegate void AsyncCallback(IAsyncResult ar);
这个委托对应的方法应该是发IAsyncResult为参数,void为返值的方法。这个方法通常是异步调用成功后调起的。可以在这个方法内执行一些异步执行成功的信息处理。
第二个null是一些自定义的状态信息,可以自己定义。
好,按照这个思路,改造一下上一篇的第二个例子,如下:
IAsyncResult asyncresult1 = dl.BeginInvoke(2, null, null);
中的两个null参数是用来作什么用的呢?
先说第一个,null,它的类型为AsyncCallback的委托,看一下这种委托的定义:
public delegate void AsyncCallback(IAsyncResult ar);
这个委托对应的方法应该是发IAsyncResult为参数,void为返值的方法。这个方法通常是异步调用成功后调起的。可以在这个方法内执行一些异步执行成功的信息处理。
第二个null是一些自定义的状态信息,可以自己定义。
好,按照这个思路,改造一下上一篇的第二个例子,如下:
1static void Main(string[] args)
2 {
3 Program p = new Program();
4 DL dl = p.Square;
5 AsyncCallback AC = new AsyncCallback(StateMethod);
6 IAsyncResult r = dl.BeginInvoke(2, AC, 1);
7 IAsyncResult r1 = dl.BeginInvoke(4, null, null);
8 Console.WriteLine(dl.EndInvoke(r) + DateTime.Now.ToString() + r.AsyncState.ToString());
9 Console.WriteLine(dl.EndInvoke(r1) + DateTime.Now.ToString());
10 }
11 public static void StateMethod(IAsyncResult AR)
12 {
13 Console.WriteLine("异步调用完毕,状态信息:" + AR.AsyncState);
14 }
15 public int Square(int i)
16 {
17 Thread.Sleep(3000); //要引入命名空间System.Threading
18 return i * i;
19 }
20 }
21 delegate int DL(int i);
22
2 {
3 Program p = new Program();
4 DL dl = p.Square;
5 AsyncCallback AC = new AsyncCallback(StateMethod);
6 IAsyncResult r = dl.BeginInvoke(2, AC, 1);
7 IAsyncResult r1 = dl.BeginInvoke(4, null, null);
8 Console.WriteLine(dl.EndInvoke(r) + DateTime.Now.ToString() + r.AsyncState.ToString());
9 Console.WriteLine(dl.EndInvoke(r1) + DateTime.Now.ToString());
10 }
11 public static void StateMethod(IAsyncResult AR)
12 {
13 Console.WriteLine("异步调用完毕,状态信息:" + AR.AsyncState);
14 }
15 public int Square(int i)
16 {
17 Thread.Sleep(3000); //要引入命名空间System.Threading
18 return i * i;
19 }
20 }
21 delegate int DL(int i);
22
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524