C# правильное хранение информации и очистка
Всем Привет,
У меня есть сокет-сервер и клиент на языке c#. Когда кто - то подключается, я сохраняю этот сокет, а также храню кучу информации о нем в словаре. Скажем, один из них отключается, каков наилучший способ очистить эту конкретную информацию? Кроме того, нужно ли мне даже хранить acceptedSockets? Я им не пользуюсь так что может мне просто позвонить
ListenFromClient( TCPServerForClient.AcceptSocket( ) );
в нить, а?
Код Ниже:
class ClientInfo { public string strTimeConnected = string.Empty; public Socket clientSocket, technicianSocket; } //Used to count the number of connected clients List< ClientInfo > clients = new List< ClientInfo >( ); //Used to store the number of connections List< Socket > acceptedSockets = new List< Socket >( ); //Holds an ID and collected info of client Dictionary< string, ClientInfo > clientMap1 = new Dictionary< string, ClientInfo >( ); //Holds Socket of technician and tech info collected Dictionary< Socket, ClientInfo > clientMap2 = new Dictionary< Socket, ClientInfo >( );
Чем дальше вниз после запуска сервера я делаю это:
Socket newAcceptedClientSocket = TCPServerForClient.AcceptSocket( ); //When Connection From Client Is Made, Add To The Accepted Sockets acceptedSockets.Add( newAcceptedClientSocket ); //Launch A New Thread And Wait For A Client Command To Be Received new Thread( ( ) => { //Spawn The Thread In The Background Thread.CurrentThread.IsBackground = true; //Listen To What The Client Is Saying ListenFromClient( newAcceptedClientSocket ); } ).Start( ); clientNew.strTimeConnected = DateTime.Now.ToString( "HH:mm:ss tt" ); clientNew.clientSocket = clientSocket; clientNew.technicianSocket = null; clients.Add( clientNew ); if( !clientMap2.TryGetValue( clientSocket, out tmp ) ) clientMap1.Add( clientNew.strId, clientNew );
Заранее спасибо. Мне нужна информация, но также нужно, чтобы она исчезла, если кто-то отключится. Может быть, я храню его неправильно, и есть лучший способ?
Что я уже пробовал:
Итерационный массив, но в словаре нет ни порядка, ни индекса.
Подумайте о том, чтобы использовать вместо этого массив