meaning of richtext box.invoke
本文关键字:invoke box richtext of meaning | 更新日期: 2023-09-27 18:27:28
我是C#的新手,我读过一些关于线程的东西,比如begininvoke和eventhandler之类的东西。但是你能解释一下下面的代码在richtextbox上做了什么吗?
private void Log(LogMsgType msgtype, string msg)
{
rtfTerminal.Invoke(new EventHandler(delegate
{
rtfTerminal.SelectedText = string.Empty;
rtfTerminal.SelectionFont = new Font(rtfTerminal.SelectionFont, FontStyle.Bold);
rtfTerminal.SelectionColor = LogMsgTypeColor[(int)msgtype];
rtfTerminal.AppendText(msg);
rtfTerminal.ScrollToCaret();
}));
}
*这个Invoke类似于begininvoke吗?*在msdn中,它将其描述为在拥有控件的基础窗口句柄的线程上执行指定的委托。不太确定它的含义。
你能解释一下下面的代码在richtextbox上做了什么吗?
它在UI线程上执行匿名方法中的代码。
这个Invoke类似于begininvoke吗?
是的,但是Invoke
是同步的,而BeginInvoke
是异步的。换句话说,对Invoke
的调用将被阻塞,直到UI线程执行指定的操作,而BeginInvoke将立即返回,而无需等待UI线程执行该操作。
在msdn中,它将其描述为在拥有控件的基础窗口句柄的线程上执行指定的委托。不太确定它的含义。
在Windows窗体中,控件只能在创建控件的线程上访问。因此,如果你在另一个线程上执行某个操作,并且你在这个线程的控件上执行了一个操作,你就不能直接执行;您需要请求UI线程执行此操作。这就是Invoke
和BeginInvoke
的作用。