/// <summary>
        /// Constructor
        /// </summary>
        /// <param name="ipcName"></param>
        public IpcReceiver(string ipcName) : base(ipcName)
        {
            ReciveQueue = new Queue <T>(10);

            m_JsonShmReceiver = new JsonShmReceiver <T>(IpcName);

            m_ReciveThread = new Thread(ReciveThreadMain);

            m_Running = true;
            m_ReciveThread.Start();
        }
        /// <summary>
        /// Dispose
        /// </summary>
        /// <param name="disposing"></param>
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                m_Running = false;

                m_ReciveThread?.Join();
                m_ReciveThread = null;

                m_JsonShmReceiver?.Dispose();
                m_JsonShmReceiver = null;
            }

            base.Dispose(disposing);
        }
        public void ShmSendReciveTest()
        {
            const string testData = "The Test Data";

            const string shmName = "TestShm";

            using (var shmSender = new JsonShmSender <string>(shmName))
            {
                using (var shmReceiver = new JsonShmReceiver <string>(shmName))
                {
                    var send = shmSender.SaveToSharedMemory(testData);
                    Assert.IsTrue(send);

                    var recived = shmReceiver.LoadFromSharedMemory();
                    Assert.AreEqual(testData, recived);
                }
            }
        }