请教一个C#线程的问题

我在C#里面创建了一个线程,里面只写了一个MESSAGEBOX.SHOW,运行之后再关闭
发现这个MESSAGEBOX仍然保留在桌面上,请问这是怎么回事呀?我在FORMCLOSING
里面加了关闭线程的语句还是不行
我记得在VC里面像上面这样关闭窗口的话 会连同弹出的MESSAGEBOX一同关闭的

0

3个回答

MESSAGEBOX.SHOW不能放在线程里,必须用invoke在主线程调用

1
qq_29670983
qq_29670983 谢谢
2 年多之前 回复

winform的线程区别前台线程和后台线程,默认创建的线程是前台线程,当所有的前台线程关闭后,应用程序域才会被卸载,程序才会正真的退出,所以才会出现你这种情况

1
qq_29670983
qq_29670983 请问下,前台线程和后台线程有什么区别呢
2 年多之前 回复
qq_29670983
qq_29670983 太厉害了, 谢谢
2 年多之前 回复

不知道你的代码的具体情况,可以试试下面的方案:
1、在你的线程声明的时候,将IsBackground这个属性置为TRUE;
2、如果1方法不好使的话,那就在你的主窗口的关闭事件里面用跨线程调用组件的方式,invoke关闭窗口;
3、第三套就是有点绕的方法了,传递关闭事件,当需要关闭的窗口接收到事件之后,执行关闭代码;
4、第四种是大杀器,如果你的主窗口关闭之后,业务逻辑上是整个程序退出的话,那就用Application.Exit();直接天下太平了。。。。。。。。。

1
qq_29670983
qq_29670983 太谢谢了,把ISBGROUNG改了之后就能自动 关闭了。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!