// Clean-up code
 public virtual void Dispose()
 {
     robot.IsNotReserved      = true;
     controller.IsNotReserved = true;
     robot.Status             = RemoteDevice.StatusE.DISCONNECTED;
     robot.disconnect();
     robot      = null;
     controller = null;
     handlerThread.Abort();
 }
        protected RobotDriver(RobotModel robot, AbstractController controller)
        {
            this.robot      = robot;
            this.controller = controller;

            this.robot.IsNotReserved      = false;
            this.controller.IsNotReserved = false;

            handlerThread = new Thread(run);
            handlerThread.Start();
        }