异步调用和回调
利用代表可以实现异步调用,并能实现回调
Delegate string myDelegate(int index);//定义一个代表
定义一个准备用来代表的异步操作函数
String GetIndexName(int index){return “IndexName”;}
定义一个准备用来执行回调的函数
Void CallBackExec(IAsyncResult ar){}
实例化一个代表,可以通过其进行异步操作
myDelegate dlg=new myDelegate(GetIndexName);
开始异步操作
dlg.BeginInvoke(index,new AsyncCallback(CallBackExec),state);
index:表示异步操作函数的参数
new AsyncCallback(CallBackExec):表示异步操作函数执行完毕后的回调
state:表示回调函数的传递状态,可以利用ar.AsyncState获得(类型转换即可)
异步操作完毕后,需要执行dlg.EndInvoke(IasyncResult)来获得操作异步返回值,并释放异步资源,可以利用(System.Runtime.Remoting.Messaging.AsyncResult)强制转换回调参数ar(IasyncResult)为ar1,则ar1.AsyncDelegate便是异步函数中的代表实例.