[ACCEPTED]-EnsureCoreWebView2Async not ready even after CoreWebView2InitializationCompleted event-webview2
Accepted answer
You need to use await InitializeAsync();
which means async void InitializeAsync
should be 3 async Task InitializeAsync
. Since async
can't be used with a constructor, you'll 2 have to call InitializeAsync from Form1_Load
.
Try the 1 following:
using System.Diagnostics;
Option 1:
public Form1()
{
InitializeComponent();
}
private async void Form1_Load(object sender, EventArgs e)
{
webView2.CoreWebView2InitializationCompleted += WebView_CoreWebView2InitializationCompleted;
Debug.WriteLine("before InitializeAsync");
await InitializeAsync();
Debug.WriteLine("after InitializeAsync");
//webView2.CoreWebView2.Navigate("https://www.microsoft.com");
//Debug.WriteLine("after Navigate");
if ((webView2 == null) || (webView2.CoreWebView2 == null))
{
Debug.WriteLine("not ready");
}
webView2.NavigateToString(System.IO.File.ReadAllText("index.html"));
Debug.WriteLine("after NavigateToString");
}
private async Task InitializeAsync()
{
Debug.WriteLine("InitializeAsync");
await webView2.EnsureCoreWebView2Async(null);
Debug.WriteLine("WebView2 Runtime version: " + webView2.CoreWebView2.Environment.BrowserVersionString);
}
private void WebView_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
{
Debug.WriteLine("WebView_CoreWebView2InitializationCompleted");
}
Output:
before InitializeAsync
InitializeAsync
WebView_CoreWebView2InitializationCompleted
WebView2 Runtime version: 89.0.774.48
after InitializeAsync
after NavigateToString
Update - here's another option
Option 2:
public Form1()
{
InitializeComponent();
}
private async void Form1_Load(object sender, EventArgs e)
{
webView2.CoreWebView2InitializationCompleted += WebView_CoreWebView2InitializationCompleted;
Debug.WriteLine("before InitializeAsync");
await InitializeAsync();
Debug.WriteLine("after InitializeAsync");
}
private async Task InitializeAsync()
{
Debug.WriteLine("InitializeAsync");
await webView2.EnsureCoreWebView2Async(null);
Debug.WriteLine("WebView2 Runtime version: " + webView2.CoreWebView2.Environment.BrowserVersionString);
//webView2.CoreWebView2.Navigate("https://www.microsoft.com");
//Debug.WriteLine("after Navigate");
if ((webView2 == null) || (webView2.CoreWebView2 == null))
{
Debug.WriteLine("not ready");
}
webView2.NavigateToString(System.IO.File.ReadAllText("index.html"));
Debug.WriteLine("after NavigateToString");
}
private void WebView_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
{
Debug.WriteLine("WebView_CoreWebView2InitializationCompleted");
}
Output:
before InitializeAsync
InitializeAsync
WebView_CoreWebView2InitializationCompleted
WebView2 Runtime version: 89.0.774.48
after NavigateToString
after InitializeAsync
Source:
stackoverflow.com
More Related questions
Cookie Warning
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.