VB .NET 多线程问题

有一个VB.NET程序,拥有一个窗体,窗体右上角有关闭按钮“X”,窗体上有一个“退出”按钮(单击该按钮后执行Application.Exit())这个程序控制着多个线程同... 有一个 VB .NET 程序,拥有一个窗体,窗体右上角有关闭按钮“X”,窗体上有一个“退出”按钮(单击该按钮后执行 Application.Exit())
这个程序控制着多个线程同时工作,这些线程通过正确的 invoke 修改着一个 listbox 控件。

窗体的Closing事件的处理程序中有如下代码:
Application.Exit();

单击“退出”按钮后,程序正常退出;所有线程似乎是正常关闭了。
但是,单击右上角的关闭按钮“X”后,程序有时能正常退出,有时报错(已知是 listbox 控件被释放后,线程无法正常访问 listbox)。

但为什么会这样?单击“退出”按钮能使程序正常关闭,线程关闭;单击右上角的关闭按钮“X”后好像无法正常关闭线程。
窗体的Closing事件的处理程序中有如下代码:
Application.Exit();

但是,为什么那样之后仍然崩溃?
展开
 我来答
百度网友94f02eb
2009-07-05 · TA获得超过8613个赞
知道大有可为答主
回答量:7955
采纳率:74%
帮助的人:4514万
展开全部
Application.Exit() 是强制放弃了本进程所有的线程。

而关闭按钮“X”,执行的是 Form_Closing 和 Form_Close 事件,这2个事件是要先尝试释放资源的,不会去强制放弃未完成的线程,就出现了你的问题
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式