public void Start(OnNewClient onConnection)
{
InitListenException = null;
InitListenFinished.Reset();
IsListening = false;
IsShuttingDown = false;
OnClientStart = onConnection;
ListeningThread = new Thread(StartThread);
ListeningThread.Name = "ListenTCP";
ListeningThread.IsBackground = true;
ListeningThread.Start();
const int cleanTimeout = 300 * 1000; // in ms
CleanTimer = new Timer(new TimerCallback(CheckSockets), null,
cleanTimeout, cleanTimeout);
}