static void Main(string[] args) { Eventer ev = new Eventer(); Two two = new Two(); ev.SomethingHappen += One.Handler; ev.SomethingHappen += two.Handler; Random rand = new Random(); for (int i = 0; i < 10; i++) { ev.DoSmth(rand.Next(-10, 25)); } ev.SomethingHappen -= One.Handler; ev.SomethingHappen += () => Console.WriteLine("Anonymous handler"); ev.SomethingHappen += delegate { Console.WriteLine("delegate handler"); }; Console.WriteLine(); Console.WriteLine(); for (int i = 0; i < 10; i++) { ev.DoSmth(rand.Next(-10, 25)); } }
protected override void DefineCareEvents(Eventer eventer) { eventer.RegisteEvent <int>(x => { result = x; }); }
private void OnDisconnect() { DestroyCurrentSocket(); ChangeSocketTaskState(SocketTaskState.STS_IDLE); //设置重连状态 Eventer.Fire("Disconnect"); }
public void Initialize() { //虚拟驱动PlayerAnimBehaviour animControl = new TestAnimControl(); control = new PlayerAnimBehaviour(animControl); eventer = new Eventer(); control.RegisteEvent(eventer); }
static StateVariable BuildStateVariable(EventInfo eventInfo, object service, Dictionary <string, StateVariableInfo> stateVariables) { var attributes = eventInfo.GetCustomAttributes(typeof(UpnpStateVariableAttribute), false); if (attributes.Length == 0) { return(null); } var type = eventInfo.EventHandlerType; if (!type.IsGenericType || type.GetGenericTypeDefinition() != typeof(EventHandler <>)) { throw new UpnpServiceDefinitionException( "A event must be handled by the type EventHandler<StateVariableChangedArgs<T>>."); } type = type.GetGenericArguments()[0]; if (!type.IsGenericType || type.GetGenericTypeDefinition() != typeof(StateVariableChangedArgs <>)) { throw new UpnpServiceDefinitionException( "A event must be handled by the type EventHandler<StateVariableChangedArgs<T>>."); } var attribute = (UpnpStateVariableAttribute)attributes[0]; if (Omit(eventInfo.DeclaringType, service, attribute.OmitUnless)) { return(null); } type = type.GetGenericArguments()[0]; var eventer = new Eventer(); var method = Eventer.HandlerMethod.MakeGenericMethod(new[] { type }); var handler = Delegate.CreateDelegate(eventInfo.EventHandlerType, eventer, method); eventInfo.AddEventHandler(service, handler); var name = string.IsNullOrEmpty(attribute.Name) ? eventInfo.Name : attribute.Name; var data_type = string.IsNullOrEmpty(attribute.DataType) ? GetDataType(type) : attribute.DataType; StateVariableInfo info; if (stateVariables.TryGetValue(name, out info)) { // TODO check type info.StateVariable.SetEventer(eventer, attribute.IsMulticast); return(null); } else { return(new StateVariable(name, data_type, new StateVariableOptions { Eventer = eventer, IsMulticast = attribute.IsMulticast })); } }
void Update() { if (bPress) { if (UICamera.Raycast(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0))) { Eventer.Fire("BatchSelectCardHover", new object[] { UICamera.lastHit.collider.gameObject }); } } }
/// <summary> /// 注册事件 /// </summary> /// <param name="eventer"></param> protected override void OnRegisteEvent(Eventer eventer) { eventer.RegisteEvent <IE_MovePos>(OnMoveToPos); eventer.RegisteEvent <IE_SpeedChange>((me) => { timeSpanCalculator.Operate(modifier => { modifier.SetValue(speed, me.targetSpeed); }); }); }
public void 接收单一事件() { Eventer target = new Eventer(); int result = 0; target.RegisteEvent <int>(x => { result = x; }); target.NotifyEvent <int>(1); Assert.AreEqual(1, result); }
void Start() { UIEventListener.Get(gameObject).onPress = delegate(GameObject go, bool state) { bPress = state; if (state) { Eventer.Fire("BatchSelectCardBegin", new object[] { go }); } else { Eventer.Fire("BatchSelectCardEnd", new object[] { go }); } }; }
void UpdateSelect(GameObject first, GameObject second) { if (first != null && second != null) { int fd = GetCardIndex(first); int sd = GetCardIndex(second); if (fd < sd) { Eventer.Fire("PlayerSelectCardList", new object[] { fd, sd }); } else if (sd < fd) { Eventer.Fire("PlayerSelectCardList", new object[] { sd, fd }); } } }
protected override void OnRegisteEvent(Eventer eventer) { eventer.RegisteEvent <IE_MovePos>(OnBeginWalk); eventer.RegisteEvent <IE_ArriveTarget>(OnArriveTarget); }
public Viewer(System.Windows.Threading.Dispatcher dispatcher) { ViewerEventer = new Eventer(dispatcher); FileInfo = new FileAccess(); }
protected MonoBehaviourX() { scope = Eventer.CreateScope(); }
protected override void DefineCareEvents(Eventer eventer) { eventer.RegisteEvent <IE_PosChanged>(OnPosChanged); }
protected override void OnRegisteEvent(Eventer eventer) { eventer.RegisteEvent <int>(OnResult); }
public SocketConnect() { this.buffer = new byte[1024]; bytesRecved = new ByteBuffer(); transfer = new LinkedList<IByteBuffer>(); receives = new LinkedList<IByteBuffer>(); //this.events = new LinkedList<ClientEvent>(); this.conCallBack = new AsyncCallback(ConnectCallBack); this.readCallback = new AsyncCallback(ReadCallback); this.sendCallback = new AsyncCallback(SendCallback); events = new Eventer(this); }
/// <summary> /// 强制要求子类定义关心的事件 /// </summary> /// <param name="eventer"></param> protected abstract void DefineCareEvents(Eventer eventer);
protected override void OnRegisteEvent(Eventer eventer) { eventer.RegisteEvent <IE_PosChanged>(OnPosChanged); }
public void Init(Eventer eventer) { this.eventer = eventer; }
void Update() { curTime = Time.time; switch (socketTaskState) { case SocketTaskState.STS_IDLE: //什么都不做 break; case SocketTaskState.STS_CONNECTING: //套接字正在连接中 //检测是否链接成功 if (tcpSocket.ConncetSuccess()) { //链接成功 ChangeSocketTaskState(SocketTaskState.STS_WORKING); lastReceivePacketTime = Time.time; //判断是第一次链接成功还是重连成功 Log.Logic("Connect success, startConnectTime={0}, curTime={1}", lastReconnectTime, lastReceivePacketTime); Eventer.Fire("ConnectSuccess", new object[] { }); //ResetReconnectMask(false); } else { float now = Time.time; if (now > lastReconnectTime + CONNECT_TIMEOUT) { //链接超时了 Log.Logic("Connect timeout, startConnectTime={0}, curTime={1}", lastReconnectTime, now); DestroyCurrentSocket(); //ChangeSocketTaskState(SocketTaskState.STS_DISCONNECT); ChangeSocketTaskState(SocketTaskState.STS_IDLE); Eventer.Fire("ConnectFailed", new object[] {}); } } break; //case SocketTaskState.STS_DISCONNECT: // if (!reconnectMask || reconnectCount >= autoReconnectMaxCount) // { // Log.Logic("reconnectMask={0}, reconnectCount={1}, connectFailed", reconnectMask, reconnectCount); // //不支持重连,或许重连达到最大次数 // Eventer.Fire("ConnectFailed", new object[] { reconnectMask }); // //进入空闲状态 // ChangeSocketTaskState(SocketTaskState.STS_IDLE); // } // else // { // //进行重连 // float now = Time.time; // tcpSocket = new TcpSocket(); // if (tcpSocket.Connect(serverAddr)) // { // reconnectCount++; // Log.Logic("start reconnect, reconnectMask={0}, reconnectCount={1}, time={2}", reconnectMask, reconnectCount, now); // ChangeSocketTaskState(SocketTaskState.STS_CONNECTING); // lastReconnectTime = Time.time; // } // else // { // Log.Logic("reconnect failed, reconnectMask={0}, reconnectCount={1}, time={2}", reconnectMask, reconnectCount, now); // //直接连接失败了。不用检查重试了 // DestroyCurrentSocket(); // Eventer.Fire("ConnectFailed", new object[] { reconnectMask }); // ChangeSocketTaskState(SocketTaskState.STS_IDLE); // } // } // break; case SocketTaskState.STS_WORKING: //接收数据 if (!tcpSocket.DoMessageRecv(ref msgQueue)) { //读取数据失败了 Log.Logic("tcpSocket.DoMessageRecv failed"); OnDisconnect(); } else { float now = Time.time; if (msgQueue.Count == 0) { if (now >= lastReceivePacketTime + RECEIVE_TIMEOUT) { Log.Logic("tcpSocket.DoMessageRecv timeout, lastReceivePacketTime={0} now={1}", lastReceivePacketTime, now); //接收数据超时,当作断开处理 OnDisconnect(); } } else { //有消息 lastReceivePacketTime = now; Log.Logic("tcpSocket.DoMessageRecv success, update lastReceivePacketTime={0}", lastReceivePacketTime); foreach (IncomingPacket packet in msgQueue) { Eventer.Fire("CompletePacket", new object[] { packet }); } msgQueue.Clear(); } } break; } }
public void RegisteEvent(Eventer eventer) { this.eventer = eventer; OnRegisteEvent(eventer); OnRegisteGameLoopEvent(GameLoopTrigger.inst); }
protected abstract void OnRegisteEvent(Eventer eventer);