Ho uno scenario in cui riceverò messaggi tramite una connessione socket. Devo anche tenere un elenco di 100 messaggi (come ad esempio Elenco) e rilasciare periodicamente vecchi messaggi dall'elenco quando viene soddisfatta una condizione.
List<Message> MessageList = new List<Message>();
Message CurrentMessage = new Message();
public void ReceiveSocketMessage (SocketMessage Message) {
if (Message.Type == duplicate) {
CurrentMessage = MessageList.FirstOrDefault(x=> x.MessageText == Message.Text);
CurrentMessage.Time = DateTime.Now;
} else {
MessageList.Add(Message);
}
}
Poiché il socket invia i messaggi molto rapidamente, sembra che qualsiasi altro metodo che tenta di accedere a MessageList causerà un problema. Altri metodi dovranno accedere all'elenco in molti punti casuali nel tempo.
Non riesco proprio a farmi girare la testa lavorando sull'elenco di oggetti senza causare problemi. Qual è il metodo tradizionale per gestirlo?
AGGIORNAMENTO: sarebbe più semplice mantenere un elenco di elementi in una tabella di database anziché un elenco di oggetti c #? Un database avrebbe sicuramente risolto tutti i principali problemi di blocco in un punto in cui non avrei dovuto preoccuparmene.