private void AcceptClientConnections() { System.Threading.Tasks.Task.Factory.StartNew(() => { while (_listening) { try { Client c = new Client(_clientListener.AcceptTcpClient(), _view.WCPresenter); _view.AddedClient = c.IP; _view.Status = "Client " + c.IP + " is now connected"; rwl.EnterWriteLock(); _clients.Add(c); rwl.ExitWriteLock(); c.Disconnected += OnDisconnect; c.WebcamChanged += (source) => _view.Status = source.EventArg; c.Send("hello"); } catch (SocketException ex) { _view.Status = ex.Message; } } }); }
public void AddClient(Client client) { lock (this) { clients.Add(client); } }
private void OnDisconnect(Client source) { rwl.EnterWriteLock(); if (_clients.Contains(source)) { _clients.Remove(source); source.Dispose(); } rwl.ExitWriteLock(); _view.RemovedClient = source.IP; _view.Status = "Client " + source.IP + " has disconnected"; }
public bool RemoveClient(Client client) { lock (this) { if (clients.Contains(client)) { clients.Remove(client); return true; } else return false; } }