什么情况下用到回调?
之前我们说过异步调用时调用方是不会等待的,任由被调函数在新的线程中执行。但有时我们希望能够获知异步调用的结束与否。或者希望在调用结束后执行某一个方法那该怎么办?
在BeginInvoke()方法中涉及到的参数中,有一个涉及到的是回调委托。这个委托就是专门用来回调用的,具体使用如下代码:
#region //带有回调函数功能的调用方法
/*public delegate void AsyncCallback(IAsyncResult ar);*/
//AsyncCallback myCallBack = ar => //所谓的回调就是异步执行完成后调用的方法
//{
// Console.WriteLine("回调委托执行结束\n");
//};
//实际的回调函数
public static void CallBack(IAsyncResult ar)
{
Console.WriteLine("回调委托执行结束");
}
AsyncCallback myCallBack = CallBack; //声明定义一个委托对象。也可使用上面的Lamda表达式。
private void button3_Click(object sender, EventArgs e)
{
//输出开始时间,当前线程名
Console.WriteLine("回调异步调用开始,当前线程为:" + Thread.CurrentThread.ManagedThreadId.ToString("00") + '\n');
Action<string> action1, action2; //声明委托对象action1,action2
action1 = this.doSomething1; //将方法