hbhbice

导航

解决串口死锁

代码
bool closing = false;
bool listening = false;

//打开or关闭串口
btnOpen_Click()
{
    
if(btnOpen.Text == "Open")
    {
        serial.Open();
    }
    
else
    {
        closing 
= true;
        
while(listening)Application.DoEvents();
        serial.Close();
        closing 
= false;
    }
}
//串口数据监听
serial_DataReceived()
{
    
if(closing)return;
    
try
    {
        listening 
= true;
        

        
//读取数据等相关操作
        ……

    }
    
catch{}
    
finally{listening=false;}
}
//退出程序
btnExit_Click()
{
    closing 
= true;
    
while(listening)Application.DoEvents();
    serial.Close();

    Application.Exit();
}

posted on 2011-07-11 12:54  hbhbice  阅读(515)  评论(0编辑  收藏  举报