BeginInvoke方式的返回值及异常
自定义委托调用方法
MethodsHandler handler = new MethodsHandler(method);
handler.BeginInvoke(CallBack,handler);
void CallBack(IAsyncResult ar)
{
object result = ((MethodsHandler )ar.AsyncDelegate).EndInvoke(ar);
}
注,BeginInvoke的第二个参数object @object对应在回调函数中即为ar.AsyncState。EndInvoke除了获取返回值和异常外,还可以释放资源,因此建议调用EndInvoke以结束委托调用。
通用委托调用方法
根据实际情况可采用无参数或多参数的委托Action,Func。
Func<object> delegateFunction = () =>
{
return obj;
}
delegateFunction.BeginInvoke(FinishCall, delegateFunction );
void CallBack(IAsyncResult iar)
{
AsyncResult ar = (AsyncResult)iar;
object result = ((Func<object>)ar.AsyncDelegate).EndInvoke(ar);
}
欢迎C#或Winform技术交流,C#交流群:83868794