Как да избегнете изключения при затваряне на форма, когато извиквате контрол между нишки, не може да достъпи разположените обекти. При извикване на форма през нишки в нишка и при използване на invoke за прислушване на стойности или промяна на свойства на контролите на форма, ако нишката не бъде прекратена преди формата да бъде затворена, винаги ще се появи изключение като това: не може да се достъпи до disposed обект. Причината трябва да е, че когато контролът на формуляра се извика в нишката, формулярът вече е излязъл, така че излиза от всички нишки преди да бъде излязъл. За да решите този проблем, можете да добавите следния код:
Вече няма да се появява изключението. Извикването на system.environment.exit(0) може напълно да излезе от програмата, независимо коя нишка е принудена да затвори, завършвайки програмата много чисто.
FormClosing събитие
Когато формулярът е затворен, се случва събитието FormClosed. Това събитие е уредено. Това освобождава всички ресурси, свързани с формата.
Ако отмените това събитие, формулярът остава отворен.
Когато формата се появи като диалог на режим, натискането на Close скрива формата и задава свойството DialogResult на Cancel. Чрез задаване на свойството DialogResult в някои събития, стойността на DialogResult може да бъде презаписана, когато потребителят натисне бутона за затваряне в горния десен ъгъл.
FormClosed събитие
Събитие FormClosed настъпва след като методът Close или Exit на класа Application затваря формата.
Можете да използвате това събитие, за да освободите част от ресурсите на формата. Можете също да използвате това събитие, за да запазите информация във формата за въвеждане или да актуализирате родителската форма.
|