void AcceptNewClients()
{
while (_listening)
{
Socket socket;
try
{
socket = _listener.AcceptSocket();
}
catch (SocketException)
{
return;
}
catch (ObjectDisposedException)
{
return;
}
catch (InvalidOperationException)
{
// called when _listener.AcceptSocket is called after _listener.Stop();
return;
}
var channel = new Client(socket);
_newClient(channel);
channel.StartReceiving();
}
}