Et lille loop spørgsmål (break loop)

Tags:    c#

Hejsa! Så er jeg på den igen. Jeg har et while loop som, sjovt nok, lader mit program fortsætte uendeligt. Jeg vil gerne have en funktion ind midt i mit loop som gør et eller andet ved tryk på en knap. Trykker man ikke skal funktionen fortsætte. Trykker man skal den gøre det, indtil den næste funktion starter (Den clearer hele programmet og starter det rigtige sted ved hver start, så burde ikke være et problem) any suggestions?





5 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Det du skal gøre er at bearbejde de beskeder windows venter på at få udført (fx tastaturtryk) når den kører en udendelig løkke. Fx noget i den her dur:

Fold kodeboks ind/udKode 


og så længere nede i der hvor du reagerer på din tast:

Fold kodeboks ind/udKode 


Kaldet til Application.Doevents tvinger din tråd til at vente på at windows får behandlet inputs og alt andet der venter på at dit program bliver færdigt med at køre en meget krævende løkke



Som sagt, fryser programmet fordi det ikke "pumper" de beskeder som Windows sender.

Application.DoEvents() bearbejder alle beskeder.

Her er et eksempel. Første knap starter loopet, og når den anden knap trykkes ned, så afspiller loop'et et beep.
Fold kodeboks ind/udKode 



Alternativt kan du også benytte en tråd.



Indlæg senest redigeret d. 14.02.2010 10:37 af Bruger #1927
Skal måske lige siges at det er en console.application



Som udgangspunkt har dit program én tråd, dvs. det kan kun gøre én ting af gangen. Hvis det står og drøner rundt i et uendeligt loop, så kan du ikke trykke på en knap, da programmet er stærkt optaget af at behandle dit loop :). Det kan løses ved at bruge flere tråde, men jeg har en ide om at hvis du fortæller os lidt mere om hvad du helt præcist gerne vil opnå, så findes der måske en simplere løsning. Tråde er en kompliceret sag som man ikke nødvendigvis bør rode alt for meget med hvis man er nybegynder :)

Mvh.

Kasper (TSW)



Ok mange tak :)

Vil jeg prøve at lege med



t