C# Cefsharp invokeonuithread如果需要
我将chromium从75.x.x更新为85.x.x(最新版本),令我惊讶的是,它给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
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中删除了这个组件。