Exemple #1
0
        private BackgroundWorker CreateWorker()
        {
            var worker = new BackgroundWorker()
            {
                WorkerReportsProgress      = true,
                WorkerSupportsCancellation = true,
            };

            worker.DoWork += (sender, e) => {
                while (_listener.Active && !e.Cancel)
                {
                    if (_listener.Pending())
                    {
                        ThreadPool.QueueUserWorkItem(HandleClient);
                    }
                    Thread.Sleep(100);
                }
            };
            worker.ProgressChanged += (sender, e) => {
                var message = e.UserState as string;
                if (String.IsNullOrEmpty(message))
                {
                    return;
                }
                Message = message;
            };
            worker.RunWorkerCompleted += (sender, e) => {
            };
            return(worker);
        }
Exemple #2
0
 private void SocketAccepted(IAsyncResult iAr)
 {
     try
     {
         if (++_socketCount == SocketSkip)
         {
             _htcpExt.EndAcceptSocket(iAr).Close();
             _htcpExt.BeginAcceptSocket(SocketAccepted, null);
         }
         else
         {
             _clientS = _htcpExt.EndAcceptSocket(iAr);
             _serverS = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
             _serverS.BeginConnect(Addresses[0], Port, ConnectedToServer, null);
         }
     }
     catch
     {
         if (_htcpExt != null && _htcpExt.Active)
         {
             if (_htcpExt.Pending())
             {
                 _htcpExt.EndAcceptSocket(iAr).Close();
             }
             _htcpExt.BeginAcceptSocket(SocketAccepted, null);
         }
         else
         {
             Disconnect();
         }
     }
 }
 private Task AcceptClientAsync()
 {
     return(Task.Factory.StartNew(async() =>
     {
         IsRunning = true && !cancel.IsCancellationRequested;
         while (!cancel.IsCancellationRequested)
         {
             if (!listener.Pending())
             {
                 continue;
             }
             TcpClient newClient = await listener.AcceptTcpClientAsync().ConfigureAwait(false);
             Stopwatch timeout = new Stopwatch();
             timeout.Restart();
             string message = await WaitForMessageAsync(newClient, new CancellationTokenSource(TimeSpan.FromSeconds(5)).Token);
             if (message != null)
             {
                 //TODO: Message recieved
             }
             timeout.Stop();
         }
     }));
 }