si permette di bloccare solo riferimenti.Originariamente inviato da IfElseIf
object lockThis = new object();
Il lock non mi permette di bloccare qualsiasi oggetto, quando cerco di blocare gli int e le stringhe mi genera un errore, facendo il cast l'errore sparisce.
lock((object) varInt){}
è un pò strano come comportamento visto che tutti i tipi compreso gli int e le stringhe derivano dalla classe object.
Cmq ho pensato di creare una classe con tutte le proprietà e i metodi condivisi tra i thread e fare il lock dell'oggetto creato da tale classe!
qui forse dico una cazz..uola :
credo che se fosse possibile bloccare un valore bloccheresti tutta l'esecuzione di tutte le classi che ne fanno uso per via del fatto che i valori vengono allocati nello stack, mentre i riferimenti nell' heap, fatta eccezione (credo, ma del resto non sono sicuro di nulla!) per string.
quindi facendo il casting poni il valore nell'heap ma come object e non come valore vero e proprio.
la mia vorrebbe essere solo un idea, per avere certezze ti consiglio di attendere la parola dei "grandi" del forum![]()
![]()

) per string.
Rispondi quotando