Hoe vermijd je uitzonderingen bij het sluiten van een formulier wanneer je een controle oproept over threads heen, geen toegang tot verwijderde objecten. Bij het aanroepen van een formulier tussen threads in een thread, en bij het gebruik van invoke om waarden toe te wijzen of eigenschappen aan vormcontroles te wijzigen, als de thread niet wordt beëindigd voordat het formulier wordt gesloten, zal er altijd een uitzondering als deze verschijnen: geen toegang tot een verwijderd object. De reden zou moeten zijn dat wanneer de formuliercontrole in de thread wordt aangeroepen, het formulier is uitgelogd, dus het verlaat alle threads voordat het formulier wordt uitgelogd. Om dit probleem op te lossen, kun je de volgende code toevoegen:
zal de uitzondering niet meer verschijnen. Het aanroepen van system.environment.exit(0 kan het programma volledig afsluiten, ongeacht welke thread gedwongen wordt af te sluiten, waardoor het programma heel schoon wordt beëindigd.
FormulierAfsluitingsevenement
Wanneer het formulier wordt gesloten, vindt het FormClosering-evenement plaats. Dit evenement is afgehandeld. Dit maakt alle middelen vrij die met het formulier te maken hebben.
Als je dit evenement annuleert, blijft het formulier open.
Wanneer het formulier als modusdialoog verschijnt, verbergt klikken op Sluiten het formulier en zet de eigenschap DialogResult op Annuleren. Door de DialogResult-eigenschap in sommige gebeurtenissen in te stellen, kan de waarde van DialogResult worden overschreven wanneer de gebruiker op de sluitknop rechtsboven klikt.
FormClosed-evenement
Een FormClosed-gebeurtenis vindt plaats nadat de Close- of Exit-methode van de gebruiker of applicatieklasse het formulier heeft gesloten.
Je kunt dit evenement gebruiken om enkele van de bronnen van het formulier vrij te geven. Je kunt dit evenement ook gebruiken om informatie op te slaan in het invoerformulier of om het ouderformulier bij te werken.
|