同样
有关委托的详细信息可以参考MSDN
上面说的非常详细
我们这里要使用到BeginInvoke和EndInvoke方法
首先我们给出传递一个参数的方法如下所示
// passed parameter by asynchronous delegate
delegate string MyMethodDelegate(string parameter);
private void button_Click(object sender SystemEventArgs e) {
MyClass instance = new MyClass();
MyMethodDelegate myMethod = new MyMethodDelegate(instanceMyMethod);
myMethodBeginInvoke(parameterValuenew AsyncCallback(AfterMyMothod)null);
}
public void AfterMyMothod(IAsyncResult result){
AsyncResult async = (AsyncResult) result;
MyMethodDelegate DelegateInstance = (MyMethodDelegate) asyncAsyncDelegate;
ConsoleWriteLine (函数调用返回值{}\n DelegateInstanceEndInvoke(result));
}
首先为了使用委托我们声明了一个MyMethodDelegate的委托该委托说明一个参数和返回值为string的函数是符合条件的所以我们在MyClass里面定义了一个MyMethod的方法该函数的型构符合上面的委托所以我们可以在Button点击的时候用这个方法实例化一个委托然后我们使用异步的方式调用这个方法为了得到返回结果我们写了AfterMyMothod方法用来显示该函数的执行结果
运行程序点击Button可以看到Output中输出的结果为MyMethod带参数执行的结果最后我给出如何传递多个参数的方法我的例子是传递个参数代码如下
// mutilparameters passed
delegate string MyMutilParamsDelegate(string parameterstring parameter);
private void button_Click(object sender SystemEventArgs e) {
MyClass instance = new MyClass();
MyMutilParamsDelegate mutilParams = new MyMutilParamsDelegate(instanceMyMutilParameters);
mutilParamsBeginInvoke(paramparamsnew AsyncCallback(AfterMutilParams)null);
}
public void AfterMutilParams(IAsyncResult result){
AsyncResult async = (AsyncResult) result;
MyMutilParamsDelegate DelegateInstance = (MyMutilParamsDelegate) asyncAsyncDelegate;
ConsoleWriteLine (多参数函数调用返回结果{}\n DelegateInstanceEndInvoke(result));
}
由于篇幅关系代码就不作详细说明了有不正确的地方请指正谢谢阅读!