Techster Skrevet 21. desember 2008 Del 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 Lenke til kommentar
Techster Skrevet 21. desember 2008 Forfatter Del 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 Lenke til kommentar
GeirGrusom Skrevet 22. desember 2008 Del 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); } } Lenke til kommentar
dahwan Skrevet 1. januar 2009 Del Skrevet 1. januar 2009 Vennligst sett tråden til "løst" 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å