コード例 #1
0
ファイル: EventServer.cs プロジェクト: powergee/EnhancedTCP
        private void ListenLoop(object o)
        {
            try
            {
                Debug.Message("EventServer의 배경쓰레드에서 반복문 진입.");
                while (!Halted)
                {
                    TcpClient   client      = mListener.AcceptTcpClient();
                    EventClient eventClient = new EventClient(client, true);

                    if (eventClient == null ? false : eventClient.IsOnline)
                    {
                        eventClient.Disconnected += HandleClientDisconnection;
                        Clients.Add(eventClient);
                        ClientConnected?.Invoke(this, new ClientConnectedEventArgs(eventClient));
                    }
                }
            }
            catch (Exception e)
            {
                Debug.Error($"EventServer의 배경쓰레드에서 예외 발생 : {e.Message}\n\n{e.StackTrace}");
                Halt();
            }
            finally
            {
                Debug.Message($"EventServer의 배경쓰레드에서 finally절 진입함.");
                // Halt 되었으므로 쓰레드가 정리됨.
            }
        }
コード例 #2
0
ファイル: EventServer.cs プロジェクト: powergee/EnhancedTCP
        private void HandleClientDisconnection(object sender, DisconnectedEventArgs e)
        {
            EventClient client = sender as EventClient;

            if (!Clients.Remove(client))
            {
                throw new InvalidOperationException("연결이 끊긴 클라이언트를 컬렉션에서 제거하는데 실패하였습니다.");
            }
        }
コード例 #3
0
ファイル: EventServer.cs プロジェクト: powergee/EnhancedTCP
 public ClientConnectedEventArgs(EventClient client)
 {
     Client = client;
 }