C#的串口程序 为什么有时候点关闭串口时会卡死
privatevoidserialPort1_DataReceived(objectsender,SerialDataReceivedEventArgse){string...
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string a = "";
if (serialPort1.IsOpen)
{
a = serialPort1.ReadExisting();
appendtextbox(a);
}
}
public void appendtextbox(string app)
{
if (Port_Data_Receive.InvokeRequired)
{
Rece mi = new Rece(appendtextbox);
this.Invoke(mi, app);
}
else
{
this.Port_Data_Receive.SuspendLayout();
StringBuilder str = new StringBuilder(Port_Data_Receive.Text);
str = str.Append(app);
Port_Data_Receive.Text = Convert.ToString(str);
Port_Data_Receive.ResumeLayout(false);
}
} 展开
{
string a = "";
if (serialPort1.IsOpen)
{
a = serialPort1.ReadExisting();
appendtextbox(a);
}
}
public void appendtextbox(string app)
{
if (Port_Data_Receive.InvokeRequired)
{
Rece mi = new Rece(appendtextbox);
this.Invoke(mi, app);
}
else
{
this.Port_Data_Receive.SuspendLayout();
StringBuilder str = new StringBuilder(Port_Data_Receive.Text);
str = str.Append(app);
Port_Data_Receive.Text = Convert.ToString(str);
Port_Data_Receive.ResumeLayout(false);
}
} 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏20(财富值+成长值)
2015-06-08
展开全部
是界面卡死?是不是当时还有数据在接收?
数据处理建议用多线程哦。
数据处理建议用多线程哦。
追问
点击串口关闭按钮时 ,界面卡死 ,但窗口数据还在更新 ;
听说在打开串口是会自动建立一个监听线程 用于检测串口DataReceived事件
追答
但是你数据处理的线程还是和控件的线程是同一线程啊。
监听线程和处理线程不一样的。出现界面卡死的情况,建议你用多线程来处理吧。http://www.cnblogs.com/cpcpc/archive/2012/07/02/2572711.html
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询