C#委托触发
事件相当于是对委托的封装,用法是一样的。
例如:有委托 Action act
1.同步触发
同步触发有两种:
- 直接和方法一样调用:act();
- 调用委托的Invoke方法:act.Invoke();
PS:如果委托订阅了多个方法,是根据订阅的顺序依次触发。
2.异步触发
异步触发是调用委托的BeginInvoke方法:act.BeginInvoke(null, null);
PS:如果委托订阅了多个方法时,这样执行会报错,异步执行的情况下只能订阅一个方法。
若是想对订阅的方法都进行异步触发时:
foreach (Action d in act.GetInvocationList())
{
d.BeginInvoke(null, null);
}
BeginInvoke说明:
IAsyncResult BeginInvoke(AsyncCallback callback, object state);
IAsyncResult:表示异步执行当前的状态
AsyncCallback:表示执行完成后的回调函数,带一个IAsyncResult类型的参数
state:表示IAsyncResult中的AsyncState的值,用于回调时用