CefSharp升级版本后加载网页一直加载不出来,自动刷新问题

3 篇文章 0 订阅

程序是Winform程序,嵌入了Cefsharp来加载本地静态页面作为功能界面,今天把它升级个版本后,发现网页竟然加载不出来了,一直不停的自动刷新。

最后发现原因是因为我只更新了Cef的dll文件等,没有更新初始化代码,初始化代码要根据版本来写,否则就会出现问题。

记录一下。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
可以使用 CefSharp 的 LoadHandler 来检测网页是否加载完成。在 LoadHandler 中,您可以使用 OnLoadEnd 方法来确定页面是否已经加载完毕。一旦页面加载完成,您可以调用 CefSharp 的截图 API 来获取当前页面的截图。 以下是一个示例代码,展示如何使用 CefSharp 来检测页面是否加载完成并获取页面截图: ``` using CefSharp; using CefSharp.WinForms; using System; using System.Drawing; using System.Threading.Tasks; namespace CefSharpScreenshotExample { public class ScreenshotExample { private ChromiumWebBrowser browser; public void Start() { // 初始化 CefSharp Cef.Initialize(new CefSettings()); // 创建 ChromiumWebBrowser 实例 browser = new ChromiumWebBrowser("https://www.example.com"); // 注册 LoadHandler 以处理页面加载事件 browser.LoadingStateChanged += OnLoadingStateChanged; // 等待浏览器窗口加载完成 browser.HandleCreated += async (sender, e) => { await WaitForBrowserToInitialize(); await CaptureScreenshot(); }; } private async Task WaitForBrowserToInitialize() { // 等待浏览器窗口加载完成,这通常需要一些时间 while (!browser.IsBrowserInitialized) { await Task.Delay(100); } } private async Task OnLoadingStateChanged(object sender, LoadingStateChangedEventArgs e) { // 页面加载完成时,获取截图 if (!e.IsLoading) { await CaptureScreenshot(); } } private async Task CaptureScreenshot() { // 等待页面加载完成 await Task.Delay(1000); // 获取页面截图 var bitmap = await browser.ScreenshotAsync(); // 保存截图到本地文件 bitmap.Save("screenshot.png"); // 显示截图 ShowScreenshot(bitmap); } private void ShowScreenshot(Bitmap bitmap) { // 在 UI 线程中显示截图 browser.Invoke(new Action(() => { var form = new Form(); form.BackgroundImage = bitmap; form.ClientSize = bitmap.Size; form.FormBorderStyle = FormBorderStyle.FixedSingle; form.StartPosition = FormStartPosition.CenterScreen; form.Show(); })); } } } ``` 请注意,上述代码中使用了异步方法,因此需要在 C# 5.0 或更高版本中使用 async/await 功能。另外,截图操作需要在 UI 线程中进行,因此需要使用 Invoke 方法来切换到 UI 线程。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值