定义委托
delegate 返回值 方法签名
delegate void Handler();
创建实例
Handler handler = new Handler(Fun);
调用委托
handler();
委托实现方法的异步调用
同步调用方法:排队调用,前一个方法执行时,后一个方法等待它的结束后才能启动
异步调用方法:不排队调用,前一个方法如果异步调用,后一个方法不必等待它的结束就可启动,异步调用的方法是创建了一个新线程来工作的,与后一个方法所在不同的线程,各自独立,互不影响
Framework中的任何方法都可以异步调用。前提是通过委托引用该方法,使用BeginInvoke开启异步调用模式。
步骤:
1. 为需要异步调用的方法定义一个相应的委托
2. 创建该委托的引用指向需要异步调用的方法
3. 使用委托类型的BeginInvoke方法开始异步调用,
a) BeginInvoke中的参数IAsyncCallback 表示异步调用的方法结束时执行的回调方法,往往用回调方法来处理异步的结果
b) BeginInvoke中的参数object 表示在回调方法中需要用到的数据,该数据被封装在IAsyncResult的AsyncState属性中。
4. 如方法有返回值,则需要调用EndInvoke取得返回值
使用事件不仅能获得比委托更好的封装性以外,还能限制含有事件的类