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中,它将其描述为在拥有控件的基础窗口句柄的线程上执行指定的委托。不太确定它的含义。

meaning of richtext box.invoke

你能解释一下下面的代码在richtextbox上做了什么吗?

它在UI线程上执行匿名方法中的代码。

这个Invoke类似于begininvoke吗?

是的,但是Invoke是同步的,而BeginInvoke是异步的。换句话说,对Invoke的调用将被阻塞,直到UI线程执行指定的操作,而BeginInvoke将立即返回,而无需等待UI线程执行该操作。

在msdn中,它将其描述为在拥有控件的基础窗口句柄的线程上执行指定的委托。不太确定它的含义。

在Windows窗体中,控件只能在创建控件的线程上访问。因此,如果你在另一个线程上执行某个操作,并且你在这个线程的控件上执行了一个操作,你就不能直接执行;您需要请求UI线程执行此操作。这就是InvokeBeginInvoke的作用。