@@ -294,6 +294,33 @@ class WebViewWrapper {
294
294
private ICoreWebView2_11 webView_11 ;
295
295
private ICoreWebView2_12 webView_12 ;
296
296
private ICoreWebView2_13 webView_13 ;
297
+
298
+ void releaseWebViews () {
299
+ if (webView != null ) {
300
+ webView .Release ();
301
+ webView = null ;
302
+ }
303
+ if (webView_2 != null ) {
304
+ webView_2 .Release ();
305
+ webView_2 = null ;
306
+ }
307
+ if (webView_10 != null ) {
308
+ webView_10 .Release ();
309
+ webView_10 = null ;
310
+ }
311
+ if (webView_11 != null ) {
312
+ webView_11 .Release ();
313
+ webView_11 = null ;
314
+ }
315
+ if (webView_12 != null ) {
316
+ webView_12 .Release ();
317
+ webView_12 = null ;
318
+ }
319
+ if (webView_13 != null ) {
320
+ webView_13 .Release ();
321
+ webView_13 = null ;
322
+ }
323
+ }
297
324
}
298
325
299
326
class WebViewProvider {
@@ -320,6 +347,10 @@ private void abortInitialization() {
320
347
webViewWrapperFuture .cancel (true );
321
348
}
322
349
350
+ void releaseWebView () {
351
+ getWebViewWrapper ().releaseWebViews ();
352
+ }
353
+
323
354
private ICoreWebView2_2 initializeWebView_2 (ICoreWebView2 webView ) {
324
355
long [] ppv = new long [1 ];
325
356
int hr = webView .QueryInterface (COM .IID_ICoreWebView2_2 , ppv );
@@ -748,14 +779,9 @@ void setupBrowser(int hr, long pv) {
748
779
void browserDispose (Event event ) {
749
780
containingEnvironment .instances .remove (this );
750
781
webViewProvider .scheduleWebViewTask (() -> {
751
- webViewProvider .getWebView ( false ). Release ();
782
+ webViewProvider .releaseWebView ();
752
783
if (environment2 != null ) environment2 .Release ();
753
784
if (settings != null ) settings .Release ();
754
- if (webViewProvider .isWebView_2Available ()) webViewProvider .getWebView_2 (false ).Release ();
755
- if (webViewProvider .isWebView_10Available ()) webViewProvider .getWebView_10 (false ).Release ();
756
- if (webViewProvider .isWebView_11Available ()) webViewProvider .getWebView_11 (false ).Release ();
757
- if (webViewProvider .isWebView_12Available ()) webViewProvider .getWebView_12 (false ).Release ();
758
- if (webViewProvider .isWebView_13Available ()) webViewProvider .getWebView_13 (false ).Release ();
759
785
if (controller != null ) {
760
786
// Bug in WebView2. Closing the controller from an event handler results
761
787
// in a crash. The fix is to delay the closure with asyncExec.
0 commit comments