我只是在研究CefSharp,并对NewScreenshot感到困惑。我已经找到了很多有关它的参考以及示例代码,但是没有一个起作用。我发现它在63.0文档中被标记为过时...
NewScreenshot是否已删除?如果是这样,用什么代替它(我如何分辨屏幕已渲染)?出于我的目的,阻塞(非异步)方法可以正常工作。
更新:
在源代码中搜索CefSharp的最新版本,发现没有对NewScreenshot的引用。
我从@amaitland提到的最小示例开始。我进行了一些更改,以使其适合我的使用。作为该更改的一部分,我将Shutdown()调用移至了程序的析构函数。
当我运行该项目时,我收到一个神秘的错误,该错误涉及从与调用Initialize()的线程不同的线程调用Shutdown()。
浏览代码时,我看到了ScreenshotAsync,并且由于我没有(不知道)使用其他线程,因此怀疑它可能涉及到。我寻找另一种获取SVG图像的方法,并找到了NewScreenshot。哪个当然不能解决我的问题,那是 GC 在另一个线程中运行我的析构函数(我不知道会发生这种情况)。
无论如何,这一次我已经为NewScreenshot删除了ScreenshotAsync,这就是我到这里结束的方式。
我在处理程序中设置了一个断点(因为从未调用过,所以未包括在内)。我希望这是相关的代码。我已经省略了初始化代码,但我相信它与示例没有什么不同。
public static void Main()
{
private const string url = "https://www.google.com/";
browser = new ChromiumWebBrowser();
browser.Paint += OnBrowserPaint;
browser.Load(url)
Console.ReadKey();
}
在调试器中逐步执行代码时,我在browser.Load(url)上设置了一个断点。如果我检查browser.Paint,会发现错误:
这是DeclaringMethod的工具提示:
我不知道这是否与我的事件处理程序未触发有关,但想在涉及事件的情况下指出这一点。
感谢您的其他建议,但我认为我需要找出为什么不应该触发的事件。
如果有帮助,我很乐意减少并上传该项目。哦,谢谢你的帮助!