{"record":{"id":"2252ed5109ca1247","repo":"cefsharp/CefSharp","slug":"renderhandler-cannot-be-null-use-defaultrenderhan","errorCode":null,"errorMessage":"RenderHandler cannot be null. Use DefaultRenderHandler unless implementing your own","messagePattern":"RenderHandler cannot be null\\. Use DefaultRenderHandler unless implementing your own","errorType":"exception","errorClass":"NullReferenceException","httpStatus":null,"severity":"error","filePath":"CefSharp.OffScreen/ChromiumWebBrowser.cs","lineNumber":482,"sourceCode":"            }\n        }\n\n        /// <summary>\n        /// Immediately returns a copy of the last rendering from Chrome,\n        /// or null if no rendering has occurred yet.\n        /// Chrome also renders the page loading, so if you want to see a complete rendering,\n        /// only start this task once your page is loaded (which you can detect via FrameLoadEnd\n        /// or your own heuristics based on evaluating JavaScript).\n        /// It is your responsibility to dispose the returned Bitmap.\n        /// The bitmap size is determined by the Size property set earlier.\n        /// </summary>\n        /// <param name=\"blend\">Choose which bitmap to retrieve, choose <see cref=\"PopupBlending.Blend\"/> for a merged bitmap.</param>\n        /// <returns>Bitmap.</returns>\n        public Bitmap ScreenshotOrNull(PopupBlending blend = PopupBlending.Main)\n        {\n            if (RenderHandler == null)\n            {\n                throw new NullReferenceException(\"RenderHandler cannot be null. Use DefaultRenderHandler unless implementing your own\");\n            }\n\n            var renderHandler = RenderHandler as DefaultRenderHandler;\n\n            if (renderHandler == null)\n            {\n                throw new Exception(\"ScreenshotOrNull and ScreenshotAsync can only be used in combination with the DefaultRenderHandler\");\n            }\n\n            lock (renderHandler.BitmapLock)\n            {\n                if (blend == PopupBlending.Main)\n                {\n                    return renderHandler.BitmapBuffer.CreateBitmap();\n                }\n\n                if (blend == PopupBlending.Popup)\n                {","sourceCodeStart":464,"sourceCodeEnd":500,"githubUrl":"https://github.com/cefsharp/CefSharp/blob/16bc6e0711a4945be17e8bc4bc7ccf9469f3fdec/CefSharp.OffScreen/ChromiumWebBrowser.cs#L464-L500","documentation":"Thrown as NullReferenceException by ScreenshotOrNull when RenderHandler is null. The offscreen browser relies on a render handler to provide the bitmap buffer; without one there is no pixel data to capture. The message directs users to DefaultRenderHandler.","triggerScenarios":"Calling ScreenshotOrNull before assigning ChromiumWebBrowser.RenderHandler, or after explicitly setting it to null. Constructing ChromiumWebBrowser with a custom render handler configuration that failed to assign.","commonSituations":"Creating a ChromiumWebBrowser and immediately calling ScreenshotOrNull before the render handler is wired. Clearing RenderHandler during teardown and then screenshotting.","solutions":["Ensure RenderHandler is set to a DefaultRenderHandler (or your custom IRenderHandler) before screenshotting.","Check RenderHandler != null before calling ScreenshotOrNull.","Use the ChromiumWebBrowser constructor overload or property setter that assigns the render handler."],"exampleFix":"// before\nvar bmp = browser.ScreenshotOrNull();\n\n// after\nbrowser.RenderHandler = new DefaultRenderHandler(browser);\nvar bmp = browser.ScreenshotOrNull();","handlingStrategy":"validation","validationCode":"if (browser.RenderHandler == null) browser.RenderHandler = new DefaultRenderHandler(browser);\nvar bmp = browser.ScreenshotOrNull();","typeGuard":"public static bool HasRenderHandler(ChromiumWebBrowser b) => b.RenderHandler != null;","tryCatchPattern":"try { return browser.ScreenshotOrNull(); }\ncatch (NullReferenceException ex) when (ex.Message.Contains(\"RenderHandler\")) { /* assign handler */ }","preventionTips":["Assign RenderHandler immediately after constructing ChromiumWebBrowser.","Use DefaultRenderHandler unless you implement custom rendering.","Check RenderHandler != null before screenshot calls."],"tags":["offscreen","render-handler","screenshot","null-reference"],"backgroundTag":null,"analyzedSha":"16bc6e0711a4945be17e8bc4bc7ccf9469f3fdec","analyzedAt":"2026-08-13T19:57:05.828Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}