窗口关闭时,调用TcpListener对象Close时偶尔卡死,有没有遇到过的! 5C
                    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());
        }
0

2个回答

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

0
u013020453
1896 socketListener定义没有写,它就是TcpListener,这就是服务端了
11 个月之前 回复

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

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
异步调用后如何停止tcplistener
我有这个代码... internal static void Start() { TcpListener listenerSocket = new TcpListener(IPAddress.Any, 32599); listenerSocket.Star
Qt5.9关闭子窗口时执行特定代码(析构函数、关闭窗口)(setAttribute(Qt::WA_DeleteOnClose)、closeEvent(QCloseEvent* event))
本文主要总结在关闭qt的QWidget子窗口瞬间,执行特定代码。由于主窗口关闭时,会自动执行析构函数,而子窗口关闭时,却不会调用析构函数,进过博主查阅资料,发现有两种方法可以在子窗口关闭时,调用析构函数或者执行一个关闭函数。 第一种方法是关闭窗口时调用窗口的析构函数,直接在构造函数添加如下代码,然后就可以调用子窗口析构函数了。 setAttribute(Qt::WA_DeleteOnClos...
Qt窗体关闭时,如何自动销毁窗体类对象
Qt窗体关闭时,如何自动销毁窗体类对象   2013-01-10 17:11:03|  分类: Qt |  标签:qt  关闭窗口  删除窗口  wa_deleteonclose  |举报|字号 订阅 QMainWindow* ImgWindow1; ImgWindow1 = new QMainWindow(this); ImgWindow1->show(); c
Qt子窗体关闭时,不执行析构函数
子窗体的构造函数中初始化了父窗体的parent,当关闭子窗体时不会调用析构函数, 只有关闭父窗体时,才会调用子窗体的析构函数, 解决办法如下 setAttribute(Qt::WA_DeleteOnClose); 写在子窗体的构造函数就可以了~
Delphi中,窗体操作的函数free,close,destroy,terminate,Release等
Delphi对窗体的关闭有多个函数: Hide,Close,Free,Release,Destroy,Terminate,FreeAndNil(),Halt 说明:delphi中nil 和C++中的NULL一样的意思,指空值,它和0值不一样;  nil就是空指针, 指针表示的就是内存的一个地址     nil表示一个空地址。   Free:先对象判断不为空再destroy。释放对象,对于窗...
[乐意黎原创] Selenium里WebDriver中窗口的close()与quit()
在使用webdriver操作时,点击主窗口的链接,会弹出子窗口。此时就会有两个窗口,如主窗口为mainWindow,子窗口为detailWindow。 1、使用detailWindow = mainWindow.switchTo().window(detailWindowHandle); 切换并定位到子窗口中。 2、然后关闭子窗口,调用detailWindow.quit(), 3、mainW...
MFC中CDialog 关闭取消时 程序会崩溃的原因
背景:在一个左树右表的框架里对左树的右键添加了响应事件,可以弹出一个添加的窗口。关于这个CDialog的关闭崩溃进行了各种调整。 现象是无论是点击取消还是点击红叉,结果都是崩溃。 最后一步步debug发现,问题不在OnCancel函数中,而是在DoModal函数中,这个函数我在调用了父类Cdialog函数的domodal()之后 添加了一句update(true); 因为关闭窗口之后 系统会
C#打开一个新窗口关闭当前窗口时卡死的问题
这个问题是这样的,有三个Windows窗体(如图,以下主窗体Form1不考虑,只考虑Form2、Form3),现在打开了Form2,我想点Form2的“button1"来打开Form3同时关掉Form2,     但出现如下图的情况,Form2跟Form3两个窗口不断反复出现,卡死了,问题出在哪儿呢。  这是因为Form2用了窗体的FormClosing事件,同时要实现打开新窗关闭当前窗,Form...
Qt子窗体关闭时,不执行析构函数问题的解决
子窗体的构造函数中初始化了父窗体的parent,当关闭子窗体时不会调用析构函数, 只有关闭父窗体时,才会调用子窗体的析构函数, 解决办法如下 setAttribute(Qt::WA_DeleteOnClose); 写在子窗体的构造函数就可以了~...
C#串口关闭SerialPort.Close()导致的卡死
https://blog.csdn.net/fengda2870/article/details/51554838?utm_source=blogxgwz4 上面的链接给出了解决方案: 将Invoke变为BeginInvoke。 亲测可行。 下面还有一篇关于串口相关的介绍: C# 串口操作系列(2) – 入门篇,为什么我的串口程序在关闭串口时候会死锁 ? ...
C#串口关闭Close()-线程卡死-解决方法
问题很简单: 1.设置isReceiving 标志位,判断串口读取线程是否在占用资源。 2.设置读写超时,防止卡死在Read()命令里本人比较懒, 在代码关键修改位置标了/!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/,供大家参考。希望能帮到大家0 0 class CSerial { SerialPort myPor
QT。子窗口不析构
今天在子窗口析构函数写了个socket->close。死活不执行。确定了是关闭子窗口不执行析构。。就查资料。this->setAttribute(Qt::WA_DeleteOnClose);。构造函数加个这个东西。就可以了
C# 解决串口关闭时程序卡死问题
关于串口关闭原理的资料:http://blog.csdn.net/wuyazhe/article/details/5606276 个人使用解决方案,将Invoke变为BeginInvoke。
qt中关闭窗口资源释放问题
针对QDialog对象,如果是栈上分配的,就不存在资源泄漏问题,但是当对象是new出来的,并且以局部对像存在,每次exec后者需要delete来释放,另外一种方法是在QDialog中设置属性: setAttribute(Qt::WA_DeleteOnClose, true);
qt写的程序关闭时崩溃了
转自:点击打开链接我就说我的程序,我认为已经正常关闭了,为什么还崩溃了。qt不用delete子部件不错,但也有坑啊。学习一下
window.close()不能关闭页面时的解决办法及思路
新接到的需求,点击页面上的取消按钮关闭当前页面,本以为直接写一行 win.close(); 就解决问题了,但是实际操作后发现并不可以关闭,打开控制台 会有一句警告。 Scripts may not close windows that were not opened by script. 查阅MDN,发现确实是这样 不是通过window.open()方法打开的窗口 不能使用close进行...
pb中窗口的打开和关闭
Close()功能关闭窗口并释放窗口以及窗口上的控件所占据的内存。语法Close(windowname)参数windowname:要关闭窗口的名称返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数windowname的值为NULL,Close()函数返回NULL。用 法应用程序使用Open()或其它Open簇函数打开窗口后,不需要窗口时,可以使用Close()关闭窗口并释放窗口以及窗口上所有控件占据的内存。 Close()函数的执行过程为:如果要关闭窗口的CloseQuery和/或
登山-C#-关于TcpListener的AcceptTcpClient()方法造成线程阻塞,进而程序无法彻底关闭的问题
在《C#高级编程》第7版第24章,有提到使用TCP类。 书中写了一个实例,两个winform,其中一个点击按钮发送字符串,另一个winform进行接收。这个实例有个缺点,只能接收一次。 我将这个实例进行了改造。第一版做好后,可以进行接收和发送,但是出现一个问题,就是在关闭程序后,在电脑的任务管理器中看到还有进程在跑。 进行了一些尝试后改了第二版,终于解决了这个问题。 看一眼这个程序
有关QWidget的关闭close()
设置关闭窗口后自动删除对象,节约内存 setAttribute(Qt::WA_DeleteOnClose); //关闭后自动删除本对象窗口关闭虚函数,覆写实现自定义功能 void DispatchEditPage::closeEvent(QCloseEvent *event) { if(!isSavedFlag) { int b=QMessageBox::q
关于Linux系统下在使用close关闭串口设备时引起的内核崩溃问题解决方法
有时在Linux系统下使用串口时,在操作关闭时会遇到内核崩溃或者其他的一些问题。 经过研究发现很可能是数据未发送完成引起的,即在关闭的时候,串口还在忙碌状态导致了崩溃问题。 解决方法就是,等待串口完成操作即可。即在关闭串口前加一个等待函数tcdrain即可。如下: tcdrain(nc->fd);        //等待输出完毕 close(nc->fd);
dialog窗口关闭方法
只需一句代码就可以实现:frameElement.lhgDG.cancel();     function closeWind() {         //window.close();  无效        // $('#test1').dialog('close'); 无效        frameElement.lhgDG.cancel();     }
Extjs 如何在关闭窗口时提示是否关闭
Extjs关闭窗口前有一个事件是beforeclose,当返回false时,extjs不再执行关闭操作。 由于使用Ext的show方法是异步执行,因此在异步弹出选择框时,仍然执行了关闭操作。 所以第一步是给窗口对象在   Ext.MessageBox.show 后添加return false;    openerWin.on("beforeclose", function()
自定义WPF关闭窗口事件触发的函数
背景:例如我在点击窗口关闭按钮时候要执行的函数有一个,名为Window_Closing那么我需要在界面控件初始化后添加到Closing中public SerialOption() { InitializeComponent(); this.Closing += Window_Closing; ...
qt中窗口关闭立即释放资源的方法,多用于子窗口
qt中窗口关闭立即释放资源的方法,多用于子窗口chatwindow *win = new chatwindow(this); win->setAttribute(Qt::WA_DeleteOnClose);
wxpython 无法退出
http://blog.csdn.net/xugangjava/article/details/8294716 ShowModal的原理 在主event loop中插入一个循环 来拦截 主窗口事件,当模态对话框退出时,取消这个循环,主窗口继续响应时间。 现在程序中开启了一个模态对话框,然后后台一个Timer要求退出程序,或者点击右下角退出程序 点击右下角退出,或者后台t
JavaScript捕获window窗口关闭事件
工作中遇到有这样的情景,要在浏览器窗口关闭的时候,提示用户某种操作。 类似在关闭窗口时,提示用户保存当前内容,选择是则保存并关闭窗口,选择否则不关闭窗口,也不做保存操作。 网上找了很多,都是说用js处理window关闭事件的,要么说onbeforeunload 方法,要么说onunload方法。 感觉都不能实现。后来突然想到这样的办法:用这两个方法一起来实现! 原因: onbef
Bootstrap- Modal对话框如何在关闭时触发事件
http://www.hello-code.com/blog/Bootstrap/201507/5233.html 下表列出了模态框中要用到事件。这些事件可在函数中当钩子使用。 事件 描述 实例 show.bs.modal 在调用 show 方法后触发。 $('#identifier').on('show.bs.modal',
2018.2.8 为什么调用了this.close()却无法关闭窗口
先说原因:窗体的FormClosing事件中有阻止窗体关闭的代码。private void btnClose_Click(object sender, EventArgs e) { this.Close(); } /// <summary> /// 关闭窗口 /// </summary> /// <param name="sen...
解决Firefox中有时使用window.close()脚本无法关闭当前窗口的方法
function showwin(win,wid,heit){     var l = (screen.width - wid) / 2;     var t = (screen.height - heit) / 2;     win3=window.open(win,"showwin","toolbar=no,location=no,directories=no,status=no,"+"res
C# 关闭串口卡死
用C#编写的wince串口通信程序基本大功告成了,与之前用API函数和线程来做串口通信不同,这次直接使用SerialPort控件来做,原本以为使用控件做会简单和方便许多,没成想,还遇到了很多麻烦。        通信协议解析判断、控件数据更新显示等等都没有给我造成什么障碍,却偏偏在“关闭串口”这个地方卡壳了。        在网上看了很多帖子,发现遇到这一问题的人还比较多,按他们的建议和方法都
IO流操作中创建的流对象为什么一定close?
IO流操作中创建的流对象为什么一定close?   Java视频教程下载                    Java培训                 Java  一个对象在没有被引用变量指向的时候它会变成垃圾,最终会被垃圾回收器从内存中清除, 对于我们创建的流对象,干嘛还要 "调用close方法将其进行关闭呢,以释放与其相关的资源"呢?   这里我
PB窗口开启与关闭事件
 一、开始事件: Open事件和Activate事件   这两个事件非常类似,它们都可在窗口打开时发生。因为窗口打开时,窗口必然激活。但是激活是指当前这个窗口起作用。当前打开的窗口可能有多个,但处于激活的窗口只有一个,所以,Activate事件比Open事件发生的范围要大。     二、结束事件: Clos事件、Deactivate事件与CloseQuery事件      
Extjs监听浏览器刷新、关闭和窗口关闭功能
先上效果图: 代码就如dubug所示: Ext.onReady(function(){ Ext.create('Ext.window.Window',{ title:'监听测试' , width:400 , height:300 , layout:'fit' , constrain:true , modal:true , ic
【C#串口编程计划】如何避免关闭串口时软件死锁
本文分析了关闭串口时软件死锁的原因并提出了解决方案。
如何获取extjs中的关闭的事件
this.on("beforeclose",function (win){                 Ext.MessageBox.buttonText.yes="确定";                 Ext.MessageBox.buttonText.no="取消";                 var aa = Ext.Msg.confirm("提示信息!","确定退出吗"
qt窗口自动delete
我们经常在写qt窗口时,调用close,但close并不释放窗口,如果要在close后,将窗口释放 要调用 QWidget::setAttribute(Qt::WA_DeleteOnClose); 将在close时自动delete调窗口实例
C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁
C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ? 标签: c#objectuibyte通讯.net 2010-05-19 08:43 55211人阅读 评论(188) 收藏 举报  分类:   通讯类库设计(4)  版权声明:本文为博主原创文章,未经博主允许不得转载。      第一篇文章我相信很多人不看都能做
delphi中窗体关闭事件FormCloseQuery与assigned函数的使用
Form窗体可以响应各种各样的时间,在Object Inspector的Events页面中罗列了一大堆,如下图: 下面将要列出一些常用的事件。 1、OnActivate 当窗体被初始激活时,就会发生OnActivate事件,当初始创建窗体或者用户从一个窗体切换到另一个窗体时,就可能激活窗体,Application对象也有一个OnActivate事件,当用户从一个应用程序切
Qt窗口的删除、析构
Qt窗口的删除、析构 类型:Python,C++ & Qt4,创建时间:一月 1, 2012, 4:42 p.m. 标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/60/。 Qt内关于窗口的删除是一个复杂的事情。接下来详细地讲一讲。 当我们创建一个窗口时,如果这个窗口是一个顶级窗口,准确地说是w.
Qt5 窗口关闭信号的响应~
有时候我们会有这样的需求: 窗口关闭信号触发之前响应一些什么东西~ 需要用到QCloseEvent #include The QCloseEvent class contains parameters that describe a close event. Close events are sent to widgets that the user wants to close, u
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 学习java基础语法时 学习java时