窗口关闭时,调用TcpListener对象Close时偶尔卡死,有没有遇到过的!

                    try
        {
            //监听线程退出
            if (threadListener != null)
            {
                evtExit.Set();
                threadListener.Join();
            }
            //所有连接端口
            clientPool.Clear();
            //关闭监听
            if (socketListener != null)
            {
                                    **//通过日志看到程序卡在这里**
                socketListener.Stop();
                socketListener.Server.Dispose();
            }
            TaskbarNotifier.CloseMessage();
        }
        catch (SocketException ex)
        {
            WriteLog(ex.ToString());
        }

是不是server已经提前关闭了?如果在socketListener != null判断时TCP链接还在,而接下来服务端已经终止了,监听端口会有类似尝试连接的动作,这个动作在超时之前的现象类似于卡死。和数据库连接类似

难道是windows server? 你关闭窗口不会是关闭服务器的运行窗口吧
windows不清楚 但linux除非你Kill -9 否则是会等待所以代码执行完毕的
windows关闭窗口估计是直接杀死进程, 类似于Kill -9 这种情况下是无法保证线程关闭顺序的
如果子线程先关闭,那么你这个主线程再去close是会挂掉
建议不要关闭窗口来杀死程序,而是写一个closeServer的接口,按照自己想要的顺序去关闭服务器