C#串口收发数据,子线程更新textbox控件内容,一段时间后,界面卡死,请教问题原因所在 委托试试http://blog.sina.com.cn/s/blog_a3d2fd2d0101dcwy.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但是我在子线程里面已经用了匿名委托来更新控件了啊,如下: public void JQHandler() {#if true while (true) { //当前气量增加,流速/10 if (chkJQStart.Checked) { if (txtCurVol.InvokeRequired) { txtCurVol.BeginInvoke(new MethodInvoker(delegate() { fCurVol = float.Parse(txtCurVol.Text) + float.Parse(txtFlowRate.Text) / 10.0f; txtCurVol.Text = fCurVol.ToString("#0.0000"); })); } //Thread.Sleep(100); Thread.CurrentThread.Join(100); } }#endif } textbox中的内容不能太多,否则刷新时间比100ms还长的话,那么就变成所有时间都在忙着刷新你那个textbox。 comport.DataReceived += new SerialDataReceivedEventHandler(ComDataRecv);//串口接到数据会激发这个事件还有,你把串口通信的代码写在主线程里了。涉及通信的,最好都另开线程。反而是UI应该在主线程。你弄反了。通信放主线程,更新UI放新线程里再委托,这是闹哪样 但是那个comport.DataReceived += new SerialDataReceivedEventHandler(ComDataRecv);//串口接到数据会激发这个事件不是会自动创建一个线程吗?这个相当于我没有在主线程里面进行通信啊?不是很明白,请指点 如何让Winform的DataGridView合并表头 高分请教问题 请一个问题,C#一个窗口的值如何付给别一个窗口. castle问题 如何关闭其它窗口? 关于程序优化的几个问题. 提点建议吧 很棘手的问题,高手请进!! 一个很简单的问题,关于C#中父类与子类赋值的问题 请问能不能在一个DATAGRID中打开两个数据库的连接???——在线等候! Webform中DataSet无法得到编辑的值 关于遍历文件夹 insert update 语句的编写
public void JQHandler()
{
#if true
while (true)
{
//当前气量增加,流速/10
if (chkJQStart.Checked)
{
if (txtCurVol.InvokeRequired)
{
txtCurVol.BeginInvoke(new MethodInvoker(delegate()
{
fCurVol = float.Parse(txtCurVol.Text) + float.Parse(txtFlowRate.Text) / 10.0f;
txtCurVol.Text = fCurVol.ToString("#0.0000");
}));
}
//Thread.Sleep(100);
Thread.CurrentThread.Join(100);
}
}
#endif
}
还有,你把串口通信的代码写在主线程里了。
涉及通信的,最好都另开线程。反而是UI应该在主线程。
你弄反了。
通信放主线程,更新UI放新线程里再委托,这是闹哪样
comport.DataReceived += new SerialDataReceivedEventHandler(ComDataRecv);//串口接到数据会激发这个事件
不是会自动创建一个线程吗?这个相当于我没有在主线程里面进行通信啊?不是很明白,请指点