Hvordan undgår man undtagelser, når man lukker en formular, når man kalder en kontrol på tværs af tråde, kan ikke få adgang til kasserede objekter. Når man kalder en formular på tværs af tråde i en tråd, og når man bruger invoke til at tildele værdier eller ændre egenskaber til formkontroller, vil tråden altid dukke op, hvis tråden ikke afsluttes, før formularen lukkes: kan ikke tilgå et disponeret objekt. Årsagen bør være, at når formularkontrollen kaldes i tråden, er formularen logget ud, så den forlader alle tråde, før formularen logges ud. For at løse dette problem kan du tilføje følgende kode:
Undtagelsen dukker ikke længere op. Kald system.environment.exit(0 kan helt afslutte programmet, uanset hvilken tråd der tvinges til at afslutte, hvilket afslutter programmet meget rent.
FormClosing event
Når formularen lukkes, opstår FormClosering-hændelsen. Denne begivenhed er håndteret. Dette frigør alle ressourcer relateret til formularen.
Hvis du aflyser dette arrangement, forbliver formularen åben.
Når formularen vises som en tilstandsdialog, skjuler et klik på Luk formularen og sætter egenskaben DialogResult til Annuller. Ved at sætte egenskaben DialogResult i nogle begivenheder kan værdien af DialogResult tilsidesættes, når brugeren klikker på lukkeknappen i øverste højre hjørne.
FormClosed-begivenheden
En FormClosed-hændelse opstår efter, at Close- eller Exit-metoden for brugeren eller applikationsklassen lukker formularen.
Du kan bruge denne begivenhed til at frigive nogle af formularens ressourcer. Du kan også bruge denne begivenhed til at gemme nogle oplysninger i inputformularen eller opdatere forældreformularen.
|