都是多线程惹得祸,c# 的窗体为什么在关闭之后,进程还有? |
您所在的位置:网站首页 › 思华软件为什么关闭了 › 都是多线程惹得祸,c# 的窗体为什么在关闭之后,进程还有? |
我的C#,在程序中用到了socket和多线程 ,结果关闭程序后,任务管理器中仍然有进程,其主要原因是线程没有结束。 C#中,Thread类有一个IsBackground 的属性.,后台线程不会防止应用程序的进程被终止掉。 整个程序关闭,但是当前台线程还没结束的时候,程序是不会被从任务管理器中去掉的。所以把启动的线程 都加入IsBackground就可以点关闭时完全退出了。 threadxxxx.IsBackground = true; 附带关闭程序的代码 private void onClose(object sender, FormClosedEventArgs e) { _shouldStop = true; if (tcpServer == null) return; if (!tcpServer.Connected) return;
try { tcpServer.Close(); threadListening.Abort(); threadBroadCast.Abort(); } catch { } } private void onCloseing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("真的要退出程序吗?", "退出程序", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { e.Cancel = true; } else { _shouldStop = true; if (tcpServer == null) return; if (!tcpServer.Connected) return; try { tcpServer.Close(); threadListening.Abort(); threadBroadCast.Abort(); } catch { } Thread.Sleep(100); Application.Exit(); } } } ———————————————— 版权声明:本文为CSDN博主「babytiger」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/babytiger/article/details/84589916 https://blog.csdn.net/babytiger/article/details/84589916?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |