这个指令是什么意思

本文关键字:意思 是什么 指令 | 更新日期: 2023-09-27 18:24:00

我正在使用cefsharp来构建个人浏览器。一切都很好,但我有一个问题要问你。

这个指令是什么意思?它插入到主窗体中。 this.InvokeOnUiThreadIfRequired(() => urlTextBox.Text = browser.Address);

在项目中,我还有一个 Control 静态类,它实现了 InvokeOnUiThreadIfRequired 函数。

public static void InvokeOnUiThreadIfRequired(this Control control, Action action)
{
    if (control.InvokeRequired)
    {
        control.BeginInvoke(action);
    }
    else
    {
        action.Invoke();
    }
}

所以问题是:- 表单传递给函数的是什么?我不明白() =>的含义.- 函数接收什么参数?

这个指令是什么意思

有三个有趣的部分:

  1. InvokeOnUiThreadIfRequired:此代码可能会检查调用方是否在 UI 线程上。由于不允许从 UI 线程以外的其他线程更改 UI,因此此代码是必需的。

  2. () => 是一个 lambda 表达式,后面跟着要执行的匿名委托(投影在Action上,这实际上是一个没有参数和返回值的方法。通过这种方式,您可以将对某些代码的调用传递给另一个方法。

  3. InvokeOnUiThreadIfRequired方法是一种扩展方法。它允许您将方法"附加"到您不拥有的另一种类型的实例,因为它是该类的方法。