Проблема с удалением компонент DevExpress.
Если на форме есть хоть один компонент DevExpress, то при закрытии формы, она не удаляется сборщиком мусора GC.
Данная проблема не возникает, если DevExpress'овские компоненты заменить на стандартные!
При вызове
(new FormSample()).ShowDialog();
GC.Collect();
форма FormSample остается в памяти.
Здравствуйте, ShchurovI, Вы писали:
using(new FormSample()).ShowDialog())
{
// TODO:
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, SerkMan, Вы писали:
SM>Здравствуйте, ShchurovI, Вы писали:
Извеняюсь поспешил.
using(FormSample sampleForm = new FormSample())
{
sampleForm.ShowDialog()
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, ShchurovI, Вы писали:
Могу объяснить почему зависают контролы.
Контролы имещие в родителях класс PopupBaseEdit, для отображения всплывающей части используют формы,
Форма при создании добавляется в колекцию форм чтобы GC не собрал их.
Когда форма отображается модально, при закрытии ей не говорится Dispose (это нужно сделать ручками), следовательно,
у контролов принадлежащих данной форме, также Dispose не будет вызван, а все контролы от PopupBaseEdit содержат ссылку на
форму PopupFormBase (а она также имеет обратную ссылку). В итоге эта форма остается в коллекции форм, и ее GC не может собрать,
А эта форма содержит ссылки на контролы.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, SerkMan, Вы писали:
А>Проблему не решило. Форма остается в памяти.
Посмотри подписку\отписку от событий.
Нам данный метод помог.
И в догонку.
(new FormSample()).ShowDialog();
GC.Collect();
Выделенное нужно записывать так:
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>