Пример #1
0
        /// <summary>
        /// read string from server.
        /// </summary>
        public void Read()
        {
            Task t = new Task(() =>
            {
                try
                {
                    if (this.IsConnected())
                    {
                        string buffer;
                        NetworkStream stream = TClient.GetStream();
                        BinaryReader reader  = new BinaryReader(stream);
                        rMutex.WaitOne();
                        buffer = reader.ReadString();
                        rMutex.ReleaseMutex();
                        if (buffer != null)
                        {
                            //conver message from string to messag format
                            MsgCommand msg = JsonConvert.DeserializeObject <MsgCommand>(buffer);
                            //invoke the message.
                            CommandRecived?.Invoke(this, msg);
                        }
                    }
                }
                catch (Exception readExp)
                {
                    Console.WriteLine(readExp.ToString());
                }
            });

            t.Start();
            t.Wait();
        }
Пример #2
0
        private void RecivingCommands(CancellationToken token)
        {
            if (disposedValue)
            {
                return;
            }

            while (!token.IsCancellationRequested)
            {
                try
                {
                    if (!Client.Connected)
                    {
                        Reconnect();
                    }
                    else
                    {
                        byte[] buffer = new byte[4];
                        int    len    = Stream.Read(buffer, 0, buffer.Length);
                        if (len > 0)
                        {
                            int bufferLength = BitConverter.ToInt32(buffer, 0);
                            buffer = new byte[bufferLength];
                            Stream.Read(buffer, 0, buffer.Length);

                            lock (clientLocker)
                            {
                                CommandBase command = buffer.DeserializeCommand();
                                CommandRecived?.Invoke(this, command);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    ClientDisconnected?.Invoke(this);
                }
            }
        }