C# Cefsharp invokeonuithread如果需要

C# Cefsharp invokeonuithread如果需要,c#,winforms,cefsharp,C#,Winforms,Cefsharp,我将chromium从75.x.x更新为85.x.x(最新版本),令我惊讶的是,它给invokeonuthreadifrequired()带来了错误 我的代码: private void Chrm_TitleChanged(object sender, TitleChangedEventArgs e) { this.InvokeOnUiThreadIfRequired(() => tabControl.SelectedTab.Text = e.title); } private v

我将chromium从75.x.x更新为85.x.x(最新版本),令我惊讶的是,它给
invokeonuthreadifrequired()带来了错误

我的代码:

private void Chrm_TitleChanged(object sender, TitleChangedEventArgs e)
{
    this.InvokeOnUiThreadIfRequired(() => tabControl.SelectedTab.Text = e.title);
}
private void Chrm_AddressChanged(object sender, AddressChangedEventArgs e)
{
    this.InvokeOnUiThreadIfRequired(() =>
    {
           url.Text = e.Address;
    });
}
错误消息:“MyForm”不包含“InvokeOnUiThreadIfRequired”的定义,并且找不到接受类型为“MyForm”的第一个参数的可访问扩展方法“InvokeOnUiThreadIfRequired”(是否缺少using指令或程序集引用?)


有没有关于如何更改代码以使其正常工作的建议?

只需5分钟就可以在GitHub上搜索问题,找出原因:

您可以通过向项目中添加以下类来解决此问题,该类是从中复制的:

公共静态类扩展
{
public static void InvokeOnUiThreadIfRequired(此控件、操作)
{
if(control.invokererequired)
{
控制。开始激活(操作);
}
其他的
{
action.Invoke();
}
}
}
然而,一个更大的问题是,您以错误的方式调用此方法。您应该使用正在修改的控件

tabControl.InvokeOnUiThreadIfRequired(()=>tabControl.SelectedTab.Text=e.title);
url.InvokeOnUiThreadIfRequired(()=>url.Text=e.Address);

最后一部分不正确,使用form对象是更明智的方法。我将ControlExtensions.cs添加到我的项目中,现在运行良好,谢谢。对不起,我真的没有在谷歌上发现他们从CefSharp中删除了这个组件。