Код: Выделить всё
public Form1() {
InitializeComponent();
InitializeAsync();
}
async void InitializeAsync() {
Console.WriteLine("InitializeAsync starting");
await webView2.EnsureCoreWebView2Async(null);
Console.WriteLine("InitializeAsync done");
}
private void Form1_Load(object sender, EventArgs e) {
Console.WriteLine("Load event");
}
private void webView2_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e) {
Console.WriteLine("CoreWebView2InitializationCompleted event");
if ((webView2 == null) || (webView2.CoreWebView2 == null))
Console.WriteLine("not ready");
webView2.NavigateToString(File.ReadAllText("index.html"));
}
Код: Выделить всё
System.InvalidOperationException
HResult=0x80131509
Message=The instance of CoreWebView2 is uninitialized and unable to complete this operation. See InitializeAsync.
Source=Microsoft.Web.WebView2.WinForms
StackTrace:
at Microsoft.Web.WebView2.WinForms.WebView2.VerifyInitializedGuard()
at Microsoft.Web.WebView2.WinForms.WebView2.NavigateToString(String htmlContent)
at webview2_base.Form1.webView2_CoreWebView2InitializationCompleted(Object sender, CoreWebView2InitializationCompletedEventArgs e) in E:\Visual Studio 2019\source\repos\explore\webview2_base\Form1.cs:line 37
at Microsoft.Web.WebView2.WinForms.WebView2.d__13.MoveNext()
Код: Выделить всё
InitializeAsync starting
Load event
CoreWebView2InitializationCompleted event
Exception thrown: 'System.InvalidOperationException' in Microsoft.Web.WebView2.WinForms.dll
An exception of type 'System.InvalidOperationException' occurred in Microsoft.Web.WebView2.WinForms.dll but was not handled in user code
The instance of CoreWebView2 is uninitialized and unable to complete this operation. See InitializeAsync.
Код работает, если Navigate перемещается после «await» в InitializeAsync. Я, вероятно, не понимаю слово «ожидание», я думал, что это задержит завершение конструктора формы и события загрузки до тех пор, пока не завершится CoreWebView2.
Я бы хотел добавить Перейдите к обработчику событий загрузки формы (но он срабатывает до того, как CoreWebView2 будет готов).
Я что-то не понимаю, или здесь есть ошибка, связанная с тем, что CoreWebView2 не инициализируется даже после того, как он был Событие «initializeComplete» запущено?
VS2019 16.9, Net 4.7.2, webview2 версия 91.0.823.0 canary
Обновить (19 марта 2021 г.): Это работает, если заменить «webView2.NavigateToString()» на 'webView2.CoreWebView2.NavigateToString()'. Но, судя по названию события, в этот момент должно работать и то, и другое.
Подробнее здесь: https://stackoverflow.com/questions/665 ... ncompleted
Мобильная версия