/// <summary>
        /// Haupt-Thread, wartet auf neue Client-Verbindungen
        /// </summary>
        private void MainListener()
        {
            // Alle Netzwerk-Schnittstellen abhören
            TcpListener listener = new TcpListener(ipAddress, serverListenPort);

            status.NewMessage("Listening on port " + serverListenPort + "...");
            try
            {
                listener.Start();
                // Solange Clients akzeptieren, bis das
                // angegebene Maximum erreicht ist
                while (status.CurrentConnections <= maxServerConnections)
                {
                    while (!listener.Pending())
                    {
                        Thread.Sleep(sleepTime);
                    }
                    Socket newSocket = listener.AcceptSocket();
                    if (newSocket != null)
                    {
                        status.CurrentConnections++;
                        // Mitteilung bzgl. neuer Clientverbindung
                        status.NewMessage("Neue Client-Verbindung (" +
                                          "IP: " + newSocket.RemoteEndPoint + ", " +
                                          "Port " + ((IPEndPoint)newSocket.LocalEndPoint).Port.ToString() + ")");
                        // Instanz der serverseitigen Verwaltungsklasse erzeugen
                        IServerInterface x = (IServerInterface)Activator.CreateInstance(serverClass);
                        x.SetConnectionData(newSocket);
                        ServerInstance newConnection = new ServerInstance(newSocket, x);
                        Clients.Add(newConnection);
                    }
                }
            }
            catch (ThreadAbortException ex)
            {
                status.NewMessage("Server wird beendet.\r\n" + ex.Message);
            }
            catch (Exception ex)
            {
                throw new Exception("Fehler bei Verbindungserkennung", ex);
            }
        }
 public void Dispose()
 {
     // Haupt-Thread beenden
     if (mainThread != null)
     {
         mainThread.Abort();
     }
     // Client-Threads beenden
     if (Clients.Count > 0)
     {
         for (int cnt = Clients.Count - 1; cnt >= 0; cnt--)
         {
             ServerInstance srv = (ServerInstance)Clients[cnt];
             srv.serverThread.Abort();
             Clients.RemoveAt(cnt);
         }
     }
     // Event-Handler abmelden
     //status.messageEvents=null;
 }