public void start()
 {
     this.thread = new Thread(delegate()
     {
         String msg;
         while (!stop)
         {
             try
             {
                 if (timeout)
                 {
                     msg     = telnetClient.Read();
                     timeout = false;
                 }
                 // 1
                 telnetClient.Write("get /instrumentation/heading-indicator/indicated-heading-deg\n");
                 msg = telnetClient.Read();
                 if (!msg.Contains("ERR"))
                 {
                     IndicatedHeadingDeg = Double.Parse(msg);
                 }
                 // 2
                 telnetClient.Write("get /instrumentation/gps/indicated-vertical-speed\n");
                 msg = telnetClient.Read();
                 if (!msg.Contains("ERR"))
                 {
                     GpsIndicatedVerticalSpeed = Double.Parse(msg);
                 }
                 // 3
                 telnetClient.Write("get /instrumentation/gps/indicated-ground-speed-kt\n");
                 msg = telnetClient.Read();
                 if (!msg.Contains("ERR"))
                 {
                     GpsIndicatedGroundSpeedKt = Double.Parse(msg);
                 }
                 // 4
                 telnetClient.Write("get /instrumentation/airspeed-indicator/indicated-speed-kt\n");
                 msg = telnetClient.Read();
                 if (!msg.Contains("ERR"))
                 {
                     AirspeedIndicatorIndicatedSpeedKt = Double.Parse(msg);
                 }
                 // 5
                 telnetClient.Write("get /instrumentation/gps/indicated-altitude-ft\n");
                 msg = telnetClient.Read();
                 if (!msg.Contains("ERR"))
                 {
                     GpsIndicatedAltitudeFt = Double.Parse(msg);
                 }
                 // 6
                 telnetClient.Write("get /instrumentation/attitude-indicator/internal-roll-deg\n");
                 msg = telnetClient.Read();
                 if (!msg.Contains("ERR"))
                 {
                     AttitudeIndicatorInternalRollDeg = Double.Parse(msg);
                 }
                 // 7
                 telnetClient.Write("get /instrumentation/attitude-indicator/internal-pitch-deg\n");
                 msg = telnetClient.Read();
                 if (!msg.Contains("ERR"))
                 {
                     AttitudeIndicatorInternalPitchDeg = Double.Parse(msg);
                 }
                 // 8
                 telnetClient.Write("get /instrumentation/altimeter/indicated-altitude-ft\n");
                 msg = telnetClient.Read();
                 if (!msg.Contains("ERR"))
                 {
                     AltimeterIndicatedAltitudeFt = Double.Parse(msg);
                 }
                 // Longitude.
                 telnetClient.Write("get /position/longitude-deg\n");
                 msg = telnetClient.Read();
                 if (!msg.Contains("ERR"))
                 {
                     Longitude = Double.Parse(msg);
                 }
                 // Latitude.
                 telnetClient.Write("get /position/latitude-deg\n");
                 msg = telnetClient.Read();
                 if (!msg.Contains("ERR"))
                 {
                     Latitude = Double.Parse(msg);
                 }
                 // Set the variables in the queue.
                 while (this.update.Count != 0)
                 {
                     string s = "set " + update.Dequeue() + "\n";
                     telnetClient.Write(s);
                     telnetClient.Read();
                 }
                 // The same for the other sensors properties.
                 Thread.Sleep(250);// read the data in 4Hz
             }
             catch (IOException e)
             {
                 if (e.ToString().Contains("A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond."))
                 {
                     // Problem with reading values.
                     ReadError = true;
                     timeout   = true;
                 }
                 else
                 {
                     stop        = true;
                     Connecting  = "disconnected";
                     ServerError = true;
                     update.Clear();
                 }
             }
             catch (FormatException) {
                 // Error with values.
                 InValidError = true;
             }
             catch (Exception)
             {
                 // Problem with connecting to the server.
                 update.Clear();
                 stop = true;
                 if (!telnetClient.IsConnect())
                 {
                     Connecting = "disconnected";
                 }
                 ServerError = true;
             }
         }
     });
     thread.Start();
 }