private void ConnectionCleanup()
        {
            if (Connection != null)
            {
                Connection.ConnectState   -= Connection_ConnectState;
                Connection.QueueJobUpdate -= Connection_QueueUpdate;
            }

            if (EmRobots_Manager != null)
            {
                EmRobots_Manager.InSync -= EmRobots_Manager_InSync;
                EmRobots_Manager.Stop();
                EmRobots_Manager = null;
            }
            this.Queue(false, new Action(() => EmRobots_InSync?.Invoke(this, false)));

            if (EmIO_Manager != null)
            {
                EmIO_Manager.InSync -= EmIO_Manager_InSync;
                EmIO_Manager.Stop();

                EmIO_Manager = null;
            }
            this.Queue(false, new Action(() => EmIO_InSync?.Invoke(this, false)));

            if (EmQueue_Manager != null)
            {
                EmQueue_Manager.InSync -= EmQueue_Manager_InSync;
                EmQueue_Manager.Stop();

                EmQueue_Manager = null;
            }
            this.Queue(false, new Action(() => EmQueue_InSync?.Invoke(this, false)));

            Connection?.Close();
            Connection?.Dispose();
            Connection = null;
        }
 private void EmRobots_Manager_InSync(object sender, bool data) => EmRobots_InSync?.Invoke(sender, data);