c# winform 关闭窗体时,如何正确结束线程???悬赏酌情追加!!还请大神现身~

2020-04-13 08:17发布

目前知道在线程那里设置个属性
Thread th = new Thread(Excute);
th.IsBackground = true;
这样就基本上可以解决问题了。
这个属性的意思就是把线程设置为后台线程。
然后关闭进程的同时,线程也会随之关闭。想知道除了这个方法。
不知道各位还有什么妙招?????
比如C#本有的TcpClient.BeginConnect方法是异步请求连接(也是一个开启线程的方法)。如果在开始连接的时候,关闭窗体,应该做什么处理??????

度娘说:
程序退出的方法:
this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;
Application.Exit(); 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;
Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;
System.Environment.Exit(0); 这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。
我是用了 th.IsBackground = true 就解决了的,System.Environment.Exit(0);是不是更彻底些呢???????
不过个人觉得这些方法太过暴力解决,我觉得应该有更合适更正确的处理程序的方法,还请各大网友相助!!!
推荐我看什么书或者提供什么方法,思路什么都行!

标签: c# 多线程
2条回答
家丑人穷心不美
2楼-- · 2020-04-13 08:37

正常情况下,程序员是需要自己负责回收垃圾的,更合适更正确的方法,就是你自己回收。
除非你很确定系统能帮你回收的情况。

查看更多
forever°为你锁心
3楼-- · 2020-04-13 08:42

建议写日志,帮助定位错误位置。

查看更多
登录 后发表回答