public void SendMsg <T>(object msg, DelegateRecvHandler handler, int timeout = 0) where T : new() { System.Reflection.FieldInfo fi = typeof(T).GetField("MSG_ID"); int ansMsgID = (int)fi.GetValue(null); RegisterHandler(ansMsgID, handler, timeout); SendMsg(msg); }
public void RegisterHandler(int msgID, DelegateRecvHandler handler, int timeout = 0) { HandlerContainer container = new HandlerContainer(); if (0 < timeout) { container.timer = new System.Timers.Timer(); container.timer.Interval = timeout * 1000; container.timer.AutoReset = false; container.timer.Elapsed += delegate { HandlerContainer.Timeout(this); }; container.timer.Start(); } container.handler = handler; _dictHandler [msgID] = container; }