winforms - 为什么我在关闭 Windows 窗体应用程序后会收到错误消息?

标签 winforms multithreading debugging

当我通过单击 F5( Debug模式)运行我的 Visual Studio Windows 窗体应用程序时,在我单击关闭按钮(调用 Application.Exit())后,几秒钟后 我收到一条错误消息:

cannot acess a disposed object: Object name 'SampleForm'.

一些背景知识,我有另一个线程每 x 秒运行一次。

我的猜测是,当我关闭应用程序时,由于它仍处于 Debug模式,另一个线程仍在运行并尝试访问某些内容 但是由于我关闭了应用程序,所以表格被处理掉了。

这是正确的吗?

我是否必须在调用 Application.Exit() 之前终止后台进程线程?

更新

现在,当我在调用 Application.Exit() 之前调用 thread.Abort() 时,应用程序将完全关闭。之前,即使在我单击关闭按钮之后,调试器仍在运行(即未选择停止按钮),所以这一定是因为线程仍然处于事件状态。

最佳答案

将您的线程标记为 BackgroundThread,它会在您关闭窗口后立即停止运行。

关于winforms - 为什么我在关闭 Windows 窗体应用程序后会收到错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/162962/

相关文章:

c# - Textbox 和 DateTimePicker BackColor Corner Case - 对此有解释吗?

c# - 在 visual studio 中以编程方式打开文件

c# - 如何在非基于网络的应用程序中向 Google Analytics 发送请求

c# - Winforms 组合框数据绑定(bind)整个对象(无数据成员)

仅在某些手机上存在 Android 应用错误/错误

python - pdb 重复下一条命令 N 次

python - 像这样将上下文注入(inject) eventlet 线程安全吗?

c# - 如何使公共(public)属性线程安全?

c++ - 如何在多线程c++中传递多维数组

python - 全局变量未绑定(bind)局部错误