我的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();
}
https://blog.csdn.net/babytiger/article/details/84589916m_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!