Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
ciao ragazzuoli... ho bisogno di un aiutino... io ho un array di 2000 istanze... queste istanze si connettono e disconnettono quindi questa array è in continuo mutamento...
come posso fare in moo che eseguendo un ciclo for each questo non vada in errore perche l'insieme è stato modificato?
Il for each non deve essere usato quando la collezione su cui itera subisce delle modifiche. Al suo posto, usa un Do Loop con contatore; oppure due for each, in cui nel primo memorizzi ciò che devi eliminare e nel secondo lo elimini.
Non è detto che vada in errore. Dipende da cosa modifichi. Il link che hai postato semplicemente descrive come è strutturato un ciclo for. Potresti postare un po' di codice o spiegare a parole cosa vai a modificare, etc.?
EDIT: Quando ho iniziato a postare io non c'era ancora la risposta di Totem
Ultima modifica effettuata da ruggy94 il 31/05/2009 alle 15:05
cmq il do loop con contatore non andrebbe bene perche dovrei modificare migliaia di righe di codice.... sarà l'ultima speranza se è .... per quanto riguarda i 2 cicli for each... si puo vedere se l'array ad esempio è in uso quel momento e ritardare l'eliminazione di un elemento o l'aggiunta di qualche ms?
ma ho letto che potrei usare il ienumerable... anche se non ho idea di cosa sia.....
Vuol dire che potresti fare uso di Linq To Object per valutare quello che stai valutando al momento con il ciclo For....Each.
Dovresti mostrare però un pò di codice per farci capire bene le tue intenzioni.
Facci sapere..
Ciao
Ultima modifica effettuata da Jeremy il 31/05/2009 alle 15:53
questo array è in continuo mutamento tra eliminazione e aggiunta di user.
ho bisogno di inviare un messaggio a tutti e 5000 gli utenti ma mentre il ciclo invia i messaggi a tutti entra un utente modifica l'array e il ciclo va a all'aceto..... cosa posso fare? non mi dite usa una var boolean perche ho centinaia di cicli... ci sarà pur qualcosa che mi permette di sapere se l'array è sotto ciclo o no?
questo array è in continuo mutamento tra eliminazione e aggiunta di user.
ho bisogno di inviare un messaggio a tutti e 5000 gli utenti ma mentre il ciclo invia i messaggi a tutti entra un utente modifica l'array e il ciclo va a all'aceto..... cosa posso fare? non mi dite usa una var boolean perche ho centinaia di cicli... ci sarà pur qualcosa che mi permette di sapere se l'array è sotto ciclo o no?
Ciao.
Non ti serve sapere se è sotto ciclo o no
Come hai letto, puoi sfruttare Linq e produrre una cosa del genere
Codice sorgente - presumibilmente VB.NET
Supponiamo che tu abbia un array di 5000 elementi
Dim Users(4999)AsString
PrivateSub CiclaArray()
Dim myUsers = From _Users In Users Select _Users
ForEach User In myUsers
MessageBox.Show(User)
Next
EndSub
In questo modo, essendo Users un array di String, per inferenza del tipo myUsers diventerà un IEnumerable(of String) completamente disconnesso dall'origine(Users) e quindi non soggetto a cambiamenti durante il ciclo.
Facci sapere...
Ciao
Ultima modifica effettuata da Jeremy il 01/06/2009 alle 15:47