146 messaggi dal 23 aprile 2007
Ciao a tutti,
cerco di essere il più chiaro possibile,
ho una lista con i nomi degli utenti loggati, con l'ora, memorizzata in una variabile di Application.
Quello che faccio è:
al login aggiungo il nome dell'utente che si è appena loggato e ciclo sulla lista cercando utenti loggati da un tempo superiore al timeout di sessione per eliminarli dalla lista stessa.
l'altra operazione che faccio è al logout dove forzo l'eliminazione dell'item relativo all'utente che sta effettuando il logout.

Il caso strano è il seguente: se mi loggo con l'utente a, aspetto che scada la sessione ed effettuo il login con un secondo utente b: l'utente b viene aggiunto alla lista, ma quando provo a rimuovere l'utente a dalla stessa, ossia quando invoco la remove dalla lista mi viene generata la seguente eccezione:

L'insieme è stato modificato. L'operazione di enumerazione potrebbe non essere eseguita.

da qui la domanda:è possibile che scadendo la sessione in qualche modo mi infici lo stato delle varibili nell'oggetto application?
Ho letto un po' l'msdn e non mi sembra sia contemplato il caso, ma allora.. che succede?

ciao
Sergio
"historyX" <historyX> ha scritto nel messaggio news:348755@...
Il caso strano è il seguente: se mi loggo con l'utente a, aspetto che scada
la sessione ed effettuo il login con un secondo utente b: l'utente b viene aggiunto alla lista, ma quando provo a rimuovere l'utente a dalla stessa, ossia quando invoco la remove dalla lista mi viene generata la seguente eccezione:

L'insieme è stato modificato. L'operazione di enumerazione potrebbe non essere eseguita.

Immagino che tu faccia un foreach nella collection per cercare l'utente e poi cancellarlo, o sbaglio?

Il trucco banale sta nel salvari il riferimento all'oggetto da cancellare dalla lista durante questo ciclo, quindi, uscito da esso, cancellarlo.
Ciao

Andrea Zani
Undicesimo comandamento: NON utilizzare Explorer 6
146 messaggi dal 23 aprile 2007
si, è corretto, uso un foreach, quindi il problema è che elimino l'item dopo aver creato l'enumeratore nel foreach? ossia eliminandolo dalla lista non lo elimino anche dall'enum.. giusto?

Quindi nel mio caso, poichè potrei avere un numero n di utenti loggati con la sessione scaduta, devo usare due cicli, nel primo memorizzo i nomi degli utenti con "scaduti" e nel secondo effettuò la rimozione...
macchinoso ma almeno ha un senso.

Grazie
Ciao
"historyX" <historyX> ha scritto nel messaggio news:348763@...
si, è corretto, uso un foreach, quindi il problema è che elimino l'item dopo aver creato l'enumeratore nel foreach? ossia eliminandolo dalla lista non lo elimino anche dall'enum.. giusto?

Hai capito causa/effetto

Quindi nel mio caso, poichè potrei avere un numero n di utenti loggati con la sessione scaduta, devo usare due cicli, nel primo memorizzo i nomi degli
utenti con "scaduti" e nel secondo effettuò la rimozione... macchinoso ma almeno ha un senso.

Esatto.

Ciao

Andrea Zani
Undicesimo comandamento: NON utilizzare Explorer 6

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
In primo piano

I più letti di oggi

Media
In evidenza
MISC