Исключение "Невозможно получить доступ к удаленному объекту" происходит из не пользовательского кода

Я вообще понимаю исключение Cannot access a disposed object, Но на этот раз, похоже, это происходит из не пользовательского кода. Я не публикую свой код, потому что на этот раз я не знаю, какой:) Иногда происходит сбой при закрытии формы. Похоже, что некоторое автоматическое обновление пользовательского интерфейса продолжается:

Сообщение: невозможно получить доступ к удаленному объекту.
Название объекта: "Иконка".
HResult: -2146232798
HelpLink: (ноль)
Источник: System.Drawing
TargetSite: IntPtr get_Handle()
Трассировки стека: 
       в System.Drawing.Icon.get_Handle()
       в System.Drawing.Icon.get_Size()
       в System.Drawing.Icon.ToBitmap()
       в System.Windows.Forms.MdiControlStrip.GetTargetWindowIcon()
       в System.Windows.Forms.MdiControlStrip..ctor(цель IWin32Window)
       в System.Windows.Forms.Form.UpdateMdiControlStrip(логическое значение развернуто)
       в System.Windows.Forms.Form.UpdateToolStrip()
       в System.Windows.Forms.Form.OnMdiChildActivate(EventArgs e)
       в System.Windows.Forms.Form.ActivateMdiChildInternal(форма формы)
       в System.Windows.Forms.Form.WmMdiActivate(Message& m)
       в System.Windows.Forms.Form.WndProc(сообщение & m)
       в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       в System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       - конец трассировки стека--

Вполне возможно, что этот сеанс запускается только в отладчике, пока я не видел его в производстве. (См. Самый нижний элемент трассировки стека.)

  • Верно ли мое предположение (что это вызвано только сеансом отладки)? Или я должен беспокоиться о той же проблеме в производстве?

  • Можно ли как-то избежать этой проблемы?

1 ответ

Решение

Предоставленный вами стек вызовов может быть связан с известной проблемой.Net. Смотрите следующую ветку на MSDN-форуме.
Возможное решение заключается в использовании Me.Hide в FormClosing обработчик событий для дочерней формы.

Другие вопросы по тегам