ChromiumWebBrowserにURLなくHTML文字列を渡すと、ブラウザがHTMLファイルを読み込む終了するのを待って、この問題を解決:
var browser = new CefSharp.OffScreen.ChromiumWebBrowser(htmlURL);
// wait the browser to finish loading the html file
using (var waitHandle = new System.Threading.AutoResetEvent(false))
{
EventHandler<LoadingStateChangedEventArgs> loadingHandler = null;
loadingHandler = (sender, e) =>
{
if (!e.IsLoading)
{
if (browser != null)
{
browser.LoadingStateChanged -= loadingHandler;
}
waitHandle.Set();
}
};
browser.LoadingStateChanged += loadingHandler;
waitHandle.WaitOne();
}
var bitmap = browser.Bitmap; // bitmap not null
この例のプロジェクトhttps://github.com/cefsharpがあります/CefSharp/blob/master/CefSharp.OffScreen.Example/Program.csこれはbrowser.ScreenshotAsync()を使用していましたが、とにかく私はこのチュートリアルに従ってオフスクリーンブラウザを適切に初期化することさえできませんでした –