c# - 表格以某种方式被处置

标签 c# winforms multithreading dispose objectdisposedexception

我有一个客户端-服务器应用程序,我在其中使用经典的套接字和线程来接收/发送数据并监听客户端。

应用程序工作正常,但在随机时间后我得到了 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/

相关文章:

c# - 不断修改文本的有效方法

c# - 启动复制/粘贴事件不起作用

c# - 从 FrameworkElement 获取 FrameworkElementFactory

c# - 如何在多重绑定(bind)中获取父值

c# - "x"最小化WinForm,右键菜单关闭WinForm?

c# - Winform自定义列表框项目

objective-c - 提高代码执行速度

multithreading - 你如何杀死一个 core.async/thread?

c# - 如何创建 C# 映射类到 csvhelper

c# - 使用 C# 为简单数据库创建前端