Як уникнути винятків при закритті форми, коли виклик контролю між потоками не може отримати доступ до диспозиційних об'єктів. При виклику форми між потоками в потоці та при використанні invoke для призначення значень або зміни властивостей контролю форми, якщо потік не завершено до закриття форми, завжди з'являється виняток: неможливо отримати доступ до диспозиційного об'єкта. Причина має бути в тому, що коли в потоку викликається контроль форми, форма вже вийшла з акаунта, тому вона виходить з усіх потоків до того, як форма вийде. Щоб розв'язати цю проблему, можна додати наступний код:
більше не буде з'являтися винятком. Виклик system.environment.exit(0) може повністю вийти з програми, незалежно від того, який потік змушений вийти, завершуючи програму дуже чисто.
FormClosing захід
Коли форма закрита, відбувається подія FormClosure. Ця подія вирішується. Це звільняє всі ресурси, пов'язані з формою.
Якщо ви скасуєте цю подію, форма залишається відкритою.
Коли форма з'являється як діалог режиму, натискання «Закрити» приховує форму і встановлює властивість DialogResult на Cancel. Встановлюючи властивості DialogResult у деяких подіях, значення DialogResult можна переписати, коли користувач натискає кнопку закриття у верхньому правому куті.
FormЗакритий захід
Подія FormClosed відбувається після того, як метод Close або Exit користувача або класу Application закриває форму.
Ви можете використати цю подію, щоб звільнити частину ресурсів форми. Цю подію також можна використати для збереження інформації у формі введення або для оновлення батьківської форми.
|