private void Dispatcher_NewGroupEvent(object sender, GroupEventEventAgrs args) { bool flag = false; try { Monitor.Enter(this, ref flag); if (args.GroupEvent.Group != null) { Group group = this.framework.groupManager.Groups[args.GroupEvent.Group.Id]; group.OnNewGroupEvent(args.GroupEvent); List <IGroupListener> list = this.listenerTable[args.GroupEvent.Group.Id]; if (list != null) { foreach (IGroupListener current in list) { current.Queue.Enqueue(args.GroupEvent); } } } } finally { if (flag) { Monitor.Exit(this); } } }