.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是一些自定义的状态信息,可以自己定义。
好,按照这个思路,改造一下上一篇的第二个例子,如下:
1
static 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
static 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.Threading18
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


浙公网安备 33010602011771号