SebastiAnn Skrevet 5. mai 2007 Del Skrevet 5. mai 2007 Hallo Jeg driver å lager et lite program (i vb6) til et online spill, der jeg skal sende dvs pakker til serveren. Det jeg sliter med er når jeg vil at en pakke skal sendes fort etter hverandre. Det jeg har er dette Private Sub Command3_Click() Form1.sckserver.SendData SendData.Text End Sub Det jeg vil er at den skal sendes evig, kanskje jeg må ha en liten timer, men vist jeg holder enter nede å sender alt sammen er den perfekte hastighet, men vil at det skal skje av seg selv. Har prøvd med Do først og Loop etter men da svarte ikke programmet MVH qaaq Lenke til kommentar
gunnard Skrevet 5. mai 2007 Del Skrevet 5. mai 2007 Har ikke programmert i VB på lenge, men det beste tror jeg er å lytte på en forandring i det du skal sende og sende dataene hver gang en forandring har oppstått. Dersom du vil ha kontinuerlig sending kan du vel lage en ny tråd der du kjører en fast loop som sender dataene og inneholder en sleep/wait i f.eks. 10 millisekunder.. Vil ikke det gå? Lenke til kommentar
aadnk Skrevet 6. mai 2007 Del Skrevet 6. mai 2007 (endret) Det beste blir nok å benytte en løkke (VB6 har ingen innebygget støtte for flertrådet programmering). Til denne type løkke må en ved regelrett intervall kalle prosedyren DoEvents for å unngå at programmet låser seg. Det er også en fordel at du legger ved API-kallet Sleep slik at ikke alle prosessorressursene brukes opp: ' Låser tråden i et visst antall millisekunderPrivate Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) ' Denne variabelen gjør det mulig å avslutte spillløkken Public Running As Boolean ' Lagrer sist gang vi kjørte oppdateringsprosedyren Private LastUpdate As Single ' Antall sekunder vi venter mellom hvert kall Const TimeToWait As Single = 0.5 Public Sub UpdateClients() ' Dersom informasjonen du sender er brukerstyrt, bør du kanskje vurdere ' å sende oppdateringskommandoen ved SendData_Change istedenfor en ' kontinuerlig strøm. I verste fall kan du jo simpelthen lagre den sist ' sendte verdien i en variabel og sende en oppdatering dersom det viser seg ' at tekstboksens verdi har forandret seg. Husk for øvrig at tekstbokser ikke ' bør brukes til annet enn brukerinntasting. Ikke bruk den som en variabel. Form1.sckserver.SendData SendData.Text End Sub Public Sub GameLoop() ' Initialiser verdier Running = True LastUpdate = Timer ' Kjør løkken inntil variabelen er satt til False Do While Running ' Vent inntil intervallet har forløpt If Timer >= LastUpdate + TimeToWait Then UpdateClients LastUpdate = Timer End If Sleep 10 ' Forhindrer overdrevent prosessorforbruk DoEvents ' Unngår låsning av programmet Loop End Sub Private Sub Form_Load() ' Da formen ved dette tidspunktet ikke har formen vist seg, ' må vi gjøre dette manuelt. Show ' Start løkken ved oppstart GameLoop End Sub Private Sub Form_Unload(Cancel As Integer) ' Det er en fordel å avslutte løkken når formen lukkes ' - ellers avsluttes ikke programmet. Running = False End Sub Endret 6. mai 2007 av aadnk Lenke til kommentar
SebastiAnn Skrevet 6. mai 2007 Forfatter Del Skrevet 6. mai 2007 Tusen takk, det funket perfekt. Lenke til kommentar
Merko Skrevet 6. mai 2007 Del Skrevet 6. mai 2007 Kult, får kanskje bruk for noe av dette her også.. Lager også ett online spill, hvor flere folk kan connecte Lenke til kommentar
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å