委托
定义
委托是方法的代理,委托代表方法,调用委托就是调用了这个方法。委托是一种数据类型。
委托的使用
- 定义委托
public delegate void Handler(); - 实例化委托
Handler handler = new Handler(Func); - 调用委托
handler();
委托的分类
单播委托:一个委托对象只关联一个方法。
多播执行:一个委托对象关联多个方法,如果委托有返回类型不适合用多播执行。
实例化委托的写法
- Handler handler = new Handler(F);
- Handler handler = F;
- Handler handler = delegate(参数类型 参数名){}
- Handler handler = Lamda表达式;
委托的异步调用
步骤:
1. 为需要异步调用的方法定义一个相应的委托
2. 创建该委托的引用指向需要异步调用的方法
3. 使用委托类型的BeginInvoke方法开始异步调用
a) BeginInvoke中的参数IAsyncCallback 表示异步调用的方法结束时执行的回调方法,往往用回调方法来处理异步的结果
b) BeginInvoke中的参数object 表示在回调方法中需要用到的数据,该数据被封装在IAsyncResult的AsyncState属性中。
4. 如方法有返回值,则需要调用EndInvoke取得返回值