У меня есть клиент-серверное приложение, в котором я использую классические сокеты и потоки для приема / отправки данных и прослушивания для клиентов.
Приложение работает нормально, но через некоторое время я получаю ObjectDisposedException :
System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'MainForm'.
at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
at System.Windows.Forms.Control.Invoke(Delegate method)
Этот код вызывается из клиентского потока Socket, и я использую метод Invoke () для запуска кода в потоке пользовательского интерфейса.
Я уверен, что я не удаляю форму вручную и не использую Close () (форма закрывается при нажатии пользователем кнопки Close), поэтому я не знаю, что может привести к ее удалению.
Редактировать : Исключение не генерируется при закрытии формы - это происходит совершенно случайно.