C# this.InvokeRequired

mznxbc123456 2013-08-17 01:37:23
哪个大侠能帮我解释下下面代码是什么意思么。这是串口通信的代码,txtReceive是接收的控件名,谢谢了~
public delegate void UpdateString(object NewData);
public void UpdateRecevie(object NewData)
{
if (this.InvokeRequired)//等待异步
{
UpdateString _myInvoke = new UpdateString(UpdateRecevie);
this.Invoke(_myInvoke, new object[] { NewData });
}
else
{
txtReceive.AppendText(NewData.ToString());
txtReceive.SelectionStart = txtReceive.Text.Length - 1;
txtReceive.ScrollToCaret();
}
}
public void UpdateReceiveCount(object NewCount)
{
if (this.InvokeRequired)//等待异步
{
UpdateString _myInvoke = new UpdateString(UpdateReceiveCount);
this.Invoke(_myInvoke, new object[] { NewCount });
}
else
{
lblRCount.Text = (Convert.ToInt32(lblRCount.Text) + Convert.ToInt32(NewCount)).ToString();
}
}
...全文
568 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvchengwei 2013-08-18
  • 打赏
  • 举报
回复
对于不是UI线程上边的代码,如果需要操作UI控件,就需要使用Invoke 或者beginInvoke。 类似的,,如果你在UI的线程上边访问UI控件,就可以直接访问数据。
threenewbee 2013-08-17
  • 打赏
  • 举报
回复
this.InvokeRequired 说白了,判断当前线程是否是UI线程。 如果this.InvokeRequired = true,你需要通过this.Invoke()传递委托去操作界面。否则直接操作即可。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧