Эта проблема, как представляется, сохранится в .NET 3.5 SP1, а также .NET 4.0.
Чтобы воспроизвести проблему, вы должны создать ToolStrip с большим количеством элементов, чем может отображать, что заставляет его создавать кнопку переполнения. Проблема возникает только при нажатии кнопки переполнения. При нажатии этого объекта создается объект ToolStripOverflow, который подписывается на событие Microsoft.Win32.UserPreferenceChangedEventHandler. Инструмент ToolStrip не удаляет объект ToolStripOverflow, который не позволяет удалить обработчик события и вызывает утечку.
Это вызвало массовые проблемы в большом приложении, которое создало формы с помощью ToolStrips.
Произведение вокруг изменить метод Dispose формы или элемента управления, на котором размещена ToolStrip следующим образом:
protected override void Dispose(bool disposing)
{
if (disposing)
{
var overflow = toolStrip1.OverflowButton.DropDown as ToolStripOverflow;
if (overflow != null)
overflow.Dispose();
}
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
Это решило его для нас
Какая версия платформы .NET была она решена в? Вы используете эту версию? –
Я использую новейшую инфраструктуру .Net. 3.5. Но мы решили удалить панель инструментов и реализовать функцию с другими элементами управления, чтобы обойти память. – 2009-12-08 14:11:42