public void Drive() { this.logThread = new Thread(positionLogger.Start);; this.logThread.Start(); foreach (RobotCommand command in DriveCommand.ReadCommands()) { command.Execute(this.robot); tbLog.BeginInvoke(new AddLog(SetLabel), new object[] { command.ToString() + " started" }); while (!this.robot.Drive.Done) { Thread.Sleep(100); } ; } this.logThread.Abort(); this.httpLogServerThread?.Abort(); httpLogServerThread = new Thread(httpLogServer.Start); this.httpLogServerThread.Start(); }