12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- using System;
- using System.Collections.Concurrent;
- using System.Threading;
- namespace StageController
- {
- public class MyMessage
- {
- private int m_msg;
- private object m_parm1;
- private object m_parm2;
- public int Msg
- {
- get { return m_msg; }
- set { m_msg = value; }
- }
- public object Parm1
- {
- get { return m_parm1; }
- set { m_parm1 = value; }
- }
- public object Parm2
- {
- get { return m_parm2; }
- set { m_parm2 = value; }
- }
- public MyMessage(int msg, object parm1, object parm2)
- {
- this.m_msg = msg;
- this.m_parm1 = parm1;
- this.m_parm2 = parm2;
- }
- }
- public class MsgMgr
- {
- private AutoResetEvent m_event = new AutoResetEvent(false);
- private ConcurrentQueue<MyMessage> m_msg = new ConcurrentQueue<MyMessage>();
- private bool m_running = false;
- public Action<int, object, object> MessageProcess
- {
- get;
- set;
- }
- public void EndLoop()
- {
- m_running = false;
- }
- public void SendMsg(int msg, object parm1, object parm2)
- {
- m_msg.Enqueue(new MyMessage(msg, parm1, parm2));
- }
- public void MsgLoop()
- {
- m_running = true;
- while (m_running)
- {
- Thread.Sleep(50);
- MyMessage msg;
- if (m_msg.TryDequeue(out msg) && MessageProcess != null)
- {
- MessageProcess(msg.Msg, msg.Parm1, msg.Parm2);
- }
- }
- }
- }
- }
|