using System; namespace ET { [Timer(TimerType.SessionAcceptTimeout)] public class SessionAcceptTimeout : ATimer { public override void Run(SessionAcceptTimeoutComponent self) { try { Log.Info("断开连接"); self.Parent.Dispose(); } catch (Exception e) { Log.Error($"move timer error: {self.Id}\n{e}"); } } } [ObjectSystem] public class SessionAcceptTimeoutComponentAwakeSystem : AwakeSystem { public override void Awake(SessionAcceptTimeoutComponent self) { self.Timer = TimerComponent.Instance.NewOnceTimer(TimeHelper.ServerNow() + 5000, TimerType.SessionAcceptTimeout, self); } } [ObjectSystem] public class SessionAcceptTimeoutComponentDestroySystem : DestroySystem { public override void Destroy(SessionAcceptTimeoutComponent self) { TimerComponent.Instance.Remove(ref self.Timer); } } }