HDSoftware Skrevet 12. januar 2007 Skrevet 12. januar 2007 Heisan igjen Jeg har følgende deklarasjon Public ClientList as List (of ClientClass) Denne listen inneholder en oversikt over tråder som er startet av klienter, altså et nettverksbasert system, men det er uvesentlig her. Jeg har en metode som rydder opp i klientlista for each Client as ClientClass in ClientList if not Client.Connected Client = Nothing End if End For Det jeg lurer på er: Hva skal jeg skrive rett errer CLIENT = NOTHING for å slette denne posten. Jeg leser i hjelp at det ikke er tillat å gjøre collection endringer i en For Each ... Next loop fordi neste post som leses vil være ugyldig. Dette har jeg selvsagt forståelse for. I Clarion (mitt tidligere liv) så kan jeg enkelt løse det ved å reversere loopen slik: Loop i = records(ClientList) to 1 by -1 Get(ClientList, i) if ClientList.ClientConnection.IsConnected = False Dispose(ClientList.ClientConnection) ClientList.ClientConnection &= Null Delete(ClientList) End!If End!Loop Som dere ser så kan jeg slette en post i en liste på denne måten uten at det skjer noe med "neste" post som leses fordi enumereringen ikke trenger å kjøres hver gang. Noe tilsvarende i VB tro? Ole
j000rn Skrevet 12. januar 2007 Skrevet 12. januar 2007 Dim ToDelete as New List(of ClientClass) for each Client as ClientClass in ClientList if not Client.Connected ToDelete.Add(Client) End if End For for each c as ClientClass in ToDelete ClientList.Remove( c ) end for
HDSoftware Skrevet 12. januar 2007 Forfatter Skrevet 12. januar 2007 Dim ToDelete as New List(of ClientClass)for each Client as ClientClass in ClientList if not Client.Connected ToDelete.Add(Client) End if End For for each c as ClientClass in ToDelete ClientList.Remove( c ) end for 7704690[/snapback] Ahhh. Smart :-) Ole
HDSoftware Skrevet 12. januar 2007 Forfatter Skrevet 12. januar 2007 Dim ToDelete as New List(of ClientClass)for each Client as ClientClass in ClientList if not Client.Connected ToDelete.Add(Client) End if End For for each c as ClientClass in ToDelete ClientList.Remove( c ) end for 7704690[/snapback] Ahhh. Smart :-) Ole 7705448[/snapback] Bare en ting til. Betyr det at jeg ikke trenger å sette lik NOTHING først? Ole
aadnk Skrevet 12. januar 2007 Skrevet 12. januar 2007 Bare en ting til. Betyr det at jeg ikke trenger å sette lik NOTHING først? 7705608[/snapback] Dersom den ikke lenger er i bruk (her fordi den ikke er referert noensteds), vil den bli rensket opp av GCen neste gang den utfører sin oppgave.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå