我有一个客户端-服务器应用程序,我在其中使用经典的套接字和线程来接收/发送数据并监听客户端。
应用程序工作正常,但在随机时间后我得到了 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() 方法在 UI 线程上运行代码。
我确定我没有手动处理表单,也没有使用 Close()(用户单击“关闭”按钮关闭表单),所以我不知道是什么导致了它的处理.
编辑:异常不会在表单关闭期间抛出 - 它完全随机发生。
最佳答案
您是否尝试过重写 Dispose
方法并在其中放置一个断点?调用堆栈可能会告诉您为什么/在哪里处理它。
关于c# - 表格以某种方式被处置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2938226/