コード例 #1
0
        private void OnAccept(IAsyncResult ar)
        {
            if (Guard.EnterExecute())
            {
                Socket socket         = ar.AsyncState as Socket;
                Socket acceptedSocket = socket.EndAccept(ar);

                try
                {
                    // set socket to accept another connection
                    socket.BeginAccept(OnAccept, socket);
                    var serverClient = new SocketClient(acceptedSocket);
                    lock (Clients)
                    {
                        Clients[serverClient.Id] = serverClient;
                        serverClient.Start(DoStart, DoClientMessage, DoClientStopped);
                    }
                }
                finally
                {
                    Guard.ExitExecute();
                }
            }
        }