Techster Skrevet 21. desember 2008 Skrevet 21. desember 2008 (endret) Her er koden som utløser det: if (this.InvokeRequired) { this.Invoke(new FormClose(CloseForm)); } else { this.Close(); } Dette blir kjørt i slutten av en eventhandler som kjører i en annen tråd en gui tråden. Noen ganger gjør den faktisk ikke det(this.InvokeRequired er noen ganger = false), men denne feilmeldingen kommer uansett. Jeg lukker kun formet i disse linjene og ikke noe annet sted. Har forsøkt å fange Disposed() eventen med den fyres aldri av virker det som, eventhandleren oppdager ihvertfall ikke noe. Formet er vist med ShowDialog(). Kanskje det er noe jeg har oversett? Står helt fast på denne..... Edit: CloseForm som delegaten viser til er kun dette: this.Close(); Endret 21. desember 2008 av Techster
Techster Skrevet 21. desember 2008 Forfatter Skrevet 21. desember 2008 (endret) Her er koden som utløser det: if (this.InvokeRequired) { this.Invoke(new FormClose(CloseForm)); } else { this.Close(); } Dette blir kjørt i slutten av en eventhandler som kjører i en annen tråd en gui tråden. Noen ganger gjør den faktisk ikke det(this.InvokeRequired er noen ganger = false), men denne feilmeldingen kommer uansett. Jeg lukker kun formet i disse linjene og ikke noe annet sted. Har forsøkt å fange Disposed() eventen med den fyres aldri av virker det som, eventhandleren oppdager ihvertfall ikke noe. Formet er vist med ShowDialog(). Kanskje det er noe jeg har oversett? Står helt fast på denne..... Edit: CloseForm som delegaten viser til er kun dette: this.Close(); Løsning: this.DialogResult = DialogResult.OK ble satt like før if'en. Ikke visste jeg at den disposed formet da. Det er vel fordi formet vises med ShowDialog og ikke Show, men rart at den disposer det bare DialogResult blir satt. Snodig. Endret 21. desember 2008 av Techster
GeirGrusom Skrevet 22. desember 2008 Skrevet 22. desember 2008 Dette er ikke heeelt relatert til det du gjør, men kanskje det kan hjelpe allikevel. Når jeg kjører andre tråder i et GUI program, så pleier jeg alltid å gjøre dette: - Legg til volatile bool app_running; - Override OnClosing og la den vente til alle tråder er avsluttet app_running = false; while(da_thread.IsAlive) Application.DoEvents(); Så hvis jeg da har en void RenderThread() { while(app_running) { Invoke(new RenderInvokeDelegate(Render)); Thread.Sleep(0); } }
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å