cef 前进后台 实现_使用CefSharp前端后台交换

使用CefSharp可以在.NET轻松的嵌入Html,不用担心WPF与Winform 控件与它的兼容性问题,CefSharp大部分的代码是C#,它可以在VB或者其他.NET平台语言中来进行使用。

近几天来,公司项目中需要使用WebBrowser,其中考虑了几个控件,如1.Winform中的WebBrowser2.WPF中的WebBrowser3.WebKit.Net4.CefSharp

Winform的WebBrowser放到项目中进行了实验和处理,发现致命问题:AllowsTransparency = true 和 Webbrowser 等内置窗体显示冲突,导致不发选择,还有就是GC回收不及时,一下子就飙到了100MB+.

后来考虑WPF的webbrowser 它实际上还是封装了Winform,有个严重的问题就是它一直置顶到最顶层,so,无法选择。

再后来考虑WebKit.Net ,但发现已经N多年没有更新,所以不在考虑...

最后跌跌撞撞跑到CefSharp,发现非常的坑啊!!竟然不支持AnyCPU,关键是我的项目中有的功能是必须AnyCpu启动的啊!还好,官方在去年已经公布了支持AnyCpu的方法。

首先Nuget引用cefsharp.WPF,它会自己引用Common,其他不用管。我们还需要再App.xaml.cs中添加代码来支持AnyCpu。

public partial classApp : Application

{

publicApp()

{

//Add Custom assembly resolver

AppDomain.CurrentDomain.AssemblyResolve +=Resolver;

//Any CefSharp references have to be in another method with NonInlining

//attribute so the assembly rolver has time to do it's thing.

InitializeCefSharp();

}

[MethodImpl(MethodImplOptions.NoInlining)]

private static voidInitializeCefSharp()

{

var settings = newCefSettings();

//Set BrowserSubProcessPath based on app bitness at runtime

settings.BrowserSubprocessPath =Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,

Environment.Is64BitProcess ? "x64" : "x86",

"CefSharp.BrowserSubprocess.exe");

//Make sure you set performDependencyCheck false

Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);

}

//Will attempt to load missing assembly from either x86 or x64 subdir

//Required by CefSharp to load the unmanaged dependencies when runni

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值