public void DoSomething() { if (NumberChanged != null) { Delegate[] dels = NumberChanged.GetInvocationList(); foreach (Delegate del in dels) { NumberChangedEventHandler handler = del as NumberChangedEventHandler; try { handler(serverName, count); } catch (Exception ex) { Delegate.Remove(NumberChanged, del); } } } }
public event NumberChangedEventHandler NumberChanged; // public List <string> PublishNumber(int count) { List <string> list = new List <string>(); if (NumberChanged == null) { return(list); } // 获得委托数组 Delegate[] delegateArray = NumberChanged.GetInvocationList(); foreach (var item in delegateArray) { // 进行一个向下转换 NumberChangedEventHandler method = (NumberChangedEventHandler)item; if (NumberChanged == null) { return(list); } list.Add(method(100)); // 调用方法并获取返回值 } return(list); }
//public NumberChangedEventHandler NumberChanged; public void Register(NumberChangedEventHandler method) { NumberChanged = method; }