Kuinka välttää poikkeuksia, kun lomake suljetaan ja ohjausta kutsutaan säikeiden välillä, ei pääse käsiksi poistettujen objektien käsiksi. Kun kutsutaan lomaketta säikeiden yli säikeessä ja käytetään invokea arvojen määrittämiseen tai ominaisuuksien muuttamiseen muotokontrollille, jos säie ei ole lopetettu ennen lomakkeen sulkemista, tällainen poikkeus ilmestyy aina: ei pääse käsiksi poistettuun objektiin. Syynä pitäisi olla se, että kun lomakkeen ohjaus kutsutaan säikeessä, lomake on kirjattu ulos, joten se poistuu kaikista säikeistä ennen kuin lomake on kirjattu ulos. Tämän ongelman ratkaisemiseksi voit lisätä seuraavan koodin:
poikkeusta ei enää näytetä. Kutsumalla system.environment.exit(0) voi poistaa ohjelman kokonaan, riippumatta siitä, mikä säie pakotetaan sulkeutumaan, jolloin ohjelma päättyy hyvin siististi.
FormPäätöstapahtuma
Kun lomake suljetaan, tapahtuu FormClosing -tapahtuma. Tämä tapahtuma hoidetaan. Tämä vapauttaa kaikki lomakkeeseen liittyvät resurssit.
Jos peruutat tämän tapahtuman, lomake pysyy avoinna.
Kun lomake ilmestyy mode-dialogina, Close-painikkeen klikkaaminen piilottaa lomakkeen ja asettaa DialogResult-ominaisuuden Peruutukseksi. Asettamalla DialogResult-ominaisuuden joissakin tapahtumissa DialogResult-arvo voidaan ohittaa, kun käyttäjä klikkaa oikeassa yläkulmassa olevaa sulkupainiketta.
FormClosed -tapahtuma
FormClosed-tapahtuma tapahtuu sen jälkeen, kun käyttäjän tai sovellusluokan Close or Exit -menetelmä sulkee lomakkeen.
Voit käyttää tätä tapahtumaa vapauttaaksesi osan lomakkeen resursseista. Voit myös käyttää tätä tapahtumaa tallentaaksesi tietoja syöttölomakkeeseen tai päivittääksesi vanhemman lomakkeen.
|