Mentre sto lavorando sul parallelismo del nostro framework, ho affrontato una strana condizione che non riesco a immaginare perché! Ho semplificato la situazione per descriverla facilmente. considerare questo codice:Modifica di una variabile locale su null, tramite un altro thread, com'è possibile
foreach(var person in personList)
{
if (person.Name == "Mehran")
break;
}
cui il personList
è condiviso tra più thread.
In quali circostanze è possibile per person
di essere null
e ho la NullReferenceException
per person.Name
?
Per quanto ne so, la persona è considerata come una variabile locale qui e se la si riesce a mettere il blocco foreach
, quindi abbiamo reiterato la personList
con successo, in modo da person
non dovrebbe essere nulla in nessun caso o qualsiasi scenario parallelo.
Anche se lo personList
viene modificato da un altro thread o il riferimento person
viene eliminato, la variabile person
deve avere un valore. Perché nessuno ha accesso al cambiamento a cui si fa riferimento a person
.
C'è qualche scenario per spiegare la situazione?
Wooops! le liste possono accettare null! Situazioni parallele mi hanno fatto pensare più complicato del necessario! Grazie mille Jon. – mehrandvd
Sì, conosco i problemi di modifica dell'elenco in situazioni parallele. Penso che la tua risposta semplice e veloce lo risolva. Controllerò per eventuali null nella lista. – mehrandvd