[c#]Qualche dubbio per l'uso di lock o monitor

giovedì 15 maggio 2008 - 21.54

program Profilo | Junior Member

Ciao,
sto cercando di capire il funzionamento e la gestione dei thread in c#.

Allora la mia situazione è la seguente:

Ho due applicazioni:
1)Client
2)Server

Allora il Server resta in ascolto in modalità singleton. Al primo accesso da parte di un client viene quindi creato un oggetto che verra condiviso con i client che si connetteranno. Questo oggetto è una lista di valori.

Il client che si connette deve poter aggiungere record a questa lista di valori.

Si pone quindi il problema di far si che un solo client alla volta possa accedere tramite un thread alla lista sul server aggiungendo in questa un certo valore.
In pratica vorrei sincronizzare gli accessi alla lista da parte dei client, in modo che solo un thread alla volta possa aggiungere dati.

Per fare questo devo usare la classe lock?
Ovvero mettere nella funzione che aggiunge i record il seguente codice:

lock(listavalori){
//aggiungo un record
}

Vi Ringrazio.

Brainkiller Profilo | Guru

>lock(listavalori){
>//aggiungo un record
>}

sarai felice di sapere che il tuo dubbio è risolto per il semplice fatto che quando il codice viene compilato, dove viene usato lo statement lock viene sostituito con Monitor.Enter e Monitor.Exit.

Lo statement lock è stato creato per scrivere il codice più rapidamente.
Quindi lock = Monitor

Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

program Profilo | Junior Member

Quindi va bene usare lock come scritto e basta?

Brainkiller Profilo | Guru

>Quindi va bene usare lock come scritto e basta?

Il tuo thread ha come titolo "dubbio per l'uso di lock o monitor".
Sono la stessa cosa. Quindi usare lock o Monitor.Enter/Exit è la stessa cosa. Come preferisci.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5