Mi ritrovo uno strano comportamento di una lista che dopo essere caricata con vari elementi si svuota immediatamente all'uscita della routine di cariamento.
Vi posto il codice per capire il problema:
qui la chiamata alla routine:
if (Response.Movements != null)
{
ProcessFleetMovements(Response.Movements);
previousMissionsRead = Response.Movements.Count; (#1)
thereAreMissionsToRead = 0;
}
e qui la routine:
private void ProcessFleetMovements(List<Mission> list)
{
if (Database.Empire.MissionWrapper.ActiveMissions == null)
Database.Empire.MissionWrapper.ActiveMissions = new List<Mission>();
else
Database.Empire.MissionWrapper.ActiveMissions.Clear();
foreach (Mission mis in list)
{
Database.Empire.MissionWrapper.ActiveMissions.Add(new Mission(mis));
}
}
Alcuni dati al contorno: la scalle MIssion Wrapper è così definita (come membro di Empire che è una classe più grande:
SI nota che ActiveMissions chiamata dalla routine ProcessFleetMovements(List<Mission> list) non è altro che una proprietà get.
IN pratica durante il debugging della routine la lista appartenente al database si carica normalmente ma subito all'ustruzione successiva (quindi in uacita dalla routine) si svuota e torna a Count = 0! Questo anche prima di esguire fisicamente l'istruzione (#1)!
Avreste qualche idea sul perchè di questo strano comportamento?
Ho provato a modificare la routine di caricamento, prima caricando in deep copy ogni singola istanza del ciclo foreach, e poi con una sola istruzione di indirizzamento della Lista con la nuova lista in ingresso: il comportamento è lo stesso: dentro la routine la lista è piena, fuori dalla routine è vuota.
Sono a secco di spiegazioni....
Alessandro Parma