C#关闭窗体时,界面卡死,我主要是想测试不关闭串口,直接关闭窗体会是怎么样的效果

Closing=true;m_IsTryToClosePort=true;while(m_IsReceiving){System.Windows.Forms.Applic... Closing = true;
m_IsTryToClosePort = true;
while (m_IsReceiving)
{
System.Windows.Forms.Application.DoEvents(); //处理界面卡死 用DoEvents
}
SerialPort.Dispose();

串口接受数据事件里面
if (Closing) return;//如果正在关闭,忽略操作,直接返回,尽快的完成串口监听线程的一次循环
展开
 我来答
百度网友ce7f3ccb4
2015-03-19 · TA获得超过1950个赞
知道大有可为答主
回答量:2299
采纳率:0%
帮助的人:1908万
展开全部
while (m_IsReceiving)
{
System.Windows.Forms.Application.DoEvents(); //处理界面卡死 用DoEvents
}
你这个是死循环啊!!肯定会卡死的!!
追问
我的m_IsReceiving是在串口事件里面做的标志位,  那你说怎么改才不会卡死?
追答
窗口关闭后,系统将结束所有的动作并会释放资源,那么你的串口通信还在继续,但是你的窗口已经不再去处理你的串口数据咯,m_IsReceiving就会一直保持一个固定状态,哪不就是要出现死循环咯。

丢到线程里面去不卡死
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式