/// <summary>
        /// Reads this instance.
        /// </summary>
        public void Read()
        {
            Task task = new Task(() =>
            {
                while (this.IsConnected)
                {
                    try
                    {
                        {
                            stream = client.GetStream();
                            BinaryReader reader = new BinaryReader(stream);
                            string jSonString   = reader.ReadString();
                            CommandMessage msg  = CommandMessage.ParseJSON(jSonString);
                            this.DataReceived?.Invoke(this, msg);
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
            });

            task.Start();
        }
 /// <summary>
 /// Initializes the specified request.
 /// </summary>
 /// <param name="request">The <see cref="CommandReceivedEventArgs"/> instance containing the event data.</param>
 public void Initialize(CommandReceivedEventArgs request)
 {
     try
     {
         {
             this.Write(request);
             stream = client.GetStream();
             BinaryReader   reader     = new BinaryReader(stream);
             string         jSonString = reader.ReadString();
             CommandMessage msg        = CommandMessage.ParseJSON(jSonString);
             this.DataReceived?.Invoke(this, msg);
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
     }
 }
        public void Read()
        {
            Task <CommandMessage> task = new Task <CommandMessage>(() =>
            {
                stream = client.GetStream();
                StreamReader reader = new StreamReader(stream);
                string jSonString   = reader.ReadLine();
                while (reader.Peek() > 0)
                {
                    jSonString += reader.ReadLine();
                }
                CommandMessage msg = CommandMessage.ParseJSON(jSonString);
                return(msg);
            });

            task.Start();
            this.DataReceived?.Invoke(this, task.Result);
        }