JeyKey Skrevet 11. oktober 2006 Del Skrevet 11. oktober 2006 (endret) Heisann! tenkte jeg skulle leke meg litt med GDI+, og lagde ett søtt lite testprogram. Problemet er bare at tråden låses, slik at prosessen manuelt må avsluttes for å avslutte programmet. Jeg tenkte at det ikke skulle bli noe problem, bare bruke BeginInvoke() det.. Fullt så enkelt var det altså ikke: KODE: http://pastebin.no/359 Hvis jeg ikke har EndInvoke() der stenger programmet av seg selv med en gang. Hvis jeg bruker Thread.Sleep() i hovedthreaden oppnår jeg bare det samme som nå. Det jeg ønsker er at den skal fortsette å tegne helt til brukeren trykker på krysset for å avslutte. Noen som vet hvordan jeg kan løse dette dilemmaet? Endret 11. oktober 2006 av JeyKey Lenke til kommentar
GeirGrusom Skrevet 11. oktober 2006 Del Skrevet 11. oktober 2006 (endret) Application.DoEvents Legg til en public volatile bool AppIsRunning = true public void ThreadLoop() { while(AppIsRunning) { // Draw! Application.DoEvents(); } Form_Closing(...) { AppIsRunning = false; while(m_thread.ThreadState == System.Threading.ThreadState.Running) { Application.DoEvents(); } } } Vet ikke om volatile er nødvendig, men i C++ må du deklarere det for at variabler ikke skal bli lagt i CPU-en sin cache, noe som gjorde at variablen ikke ble oppdatert for hver thread. Har ikke testet dette. Endret 11. oktober 2006 av GeirGrusom Lenke til kommentar
JeyKey Skrevet 11. oktober 2006 Forfatter Del Skrevet 11. oktober 2006 (endret) du er dagens redning, Geir! jeg hadde aldri hørt om keywordet volatile før, men det er vel ikke nødvendig når alt kjører på samme thread, slik som nå? Jeg fjerna alt som hadde med threading og delegates å gjøre. Den siste delen med while(Thread.CurrentThread.ThreadState == ThreadState.Running) funka ikke helt da, men erstatta den delen med Application.ExitThread() jeg Endret 11. oktober 2006 av JeyKey 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å