internal bool StopMQTT()
        {
            var res = false;

            try
            {
                res = UnLoadMQTTClient();
                if (res)
                {
                    if (this.IncomingMessageThread != null)
                    {
                        this.IncomingMessageThread.Suspend();
                        this.IncomingMessageThread.Resume();
                        this.IncomingMessageThread.Abort();
                        this.IncomingMessageThread = null;

                        mQTTProcessState = MQTTProcessState.Stopped;

                        // free the buffer
                        MqttMsgPublishEventArgs e;
                        while (IncomingMessage.Count > 0)
                        {
                            IncomingMessage.TryDequeue(out e);
                            //label_MsgInQueue.Text = "" + IncomingMessage.Count;
                        }
                    }
                }
            }
            catch (Exception) { }
            return(res);
        }
        private void StartProsess_IncomingMessage()
        {
            this.mQTTProcessState = MQTTProcessState.Started;

            while (mQTTProcessState != MQTTProcessState.Stopped)
            {
                // Dequeue
                if (IncomingMessage.Count > 0 &&
                    (mQTTProcessState == MQTTProcessState.Started ||
                     mQTTProcessState == MQTTProcessState.Completed))
                {
                    MqttMsgPublishEventArgs e;
                    if (IncomingMessage.TryDequeue(out e))
                    {
                        mQTTProcessState = MQTTProcessState.Processing;
                        if (e != null && e.Message.Length > 0)
                        {
                            Process_IncomingMessage(e);
                        }
                        //label_MsgInQueue.BeginInvoke(new Action(() =>
                        //        {
                        //            label_MsgInQueue.Text = IncomingMessage.Count.ToString();
                        //        }));
                        mQTTProcessState = MQTTProcessState.Completed;
                    }
                }
                // Thread.Sleep(50);
            }
        }
        internal bool StartMQTT()
        {
            var res = false;

            if (IsConnected && IsThreadLaunched(this.IncomingMessageThread))
            {
                res = true;
            }
            else
            {
                if (CreateMQTTClient())
                {
                    StartProsessing();
                    res = true;
                }
            }
            mQTTProcessState = res ? MQTTProcessState.Connetion_Success
                                   : MQTTProcessState.Connetion_Failure;
            UpdateSate();
            return(res);
        }