public void PostDelayed(AMCMsg.Runner runnable, long delay) { AMCMsg msg = new AMCMsg(); msg.targetTime = Util.DelayMs(delay); msg.SetTarget(this); msg.Runnable = runnable; SendAtTime(msg, msg.targetTime); }
public void Post(AMCMsg.Runner runnable) { AMCMsg msg = new AMCMsg(); msg.SetTarget(this); msg.Runnable = runnable; msg.targetTime = Util.NowMs; Send(msg); }
public override void HandleMessage(AMCMsg msg) { Debug.WriteLine("Handler1 to process message " + msg.what + " at ticket " + Util.GetMilliseconds(DateTime.Now.Ticks)); switch (msg.what) { case 1: break; case 2: break; case 3: Debug.WriteLine("3:" + msg.obj); break; case 4: Debug.WriteLine("4:" + msg.GetData().get<String>("key", null)); break; default: Debug.WriteLine("Unknown message " + msg.what); break; } }
internal void Add(AMCMsg message) { if (message.used) { throw new InvalidOperationException("one AMCMsg can not be add to queue multiple times"); } lock(_messages){ message.used = true; _messages.Add(message); Monitor.PulseAll(_messages); } }
public void SendAtTime(AMCMsg message, long time) { message.targetTime = time; message.SetTarget(this); _looper.Add(message); }
public void Send(AMCMsg message, long delay) { SendAtTime(message, Util.DelayMs(delay)); }
public void Send(AMCMsg message) { SendAtTime(message, Util.NowMs); }
public virtual void HandleMessage(AMCMsg message) { }
public void WaitProcess(AMCMsg message) { message.waiter = new Object(); SendAtTime(message, Util.NowMs); lock (message.waiter) { Monitor.Wait(message.waiter); } }
public void WaitProcess(string what) { AMCMsg message = new AMCMsg(what); message.waiter = new Object(); SendAtTime(message, Util.NowMs); lock (message.waiter) { Monitor.Wait(message.waiter); } }