Убедитесь, что CoreWebView2Async не готов даже после события CoreWebView2InitializationCompleted.C#

Место общения программистов C#
Ответить
Anonymous
 Убедитесь, что CoreWebView2Async не готов даже после события CoreWebView2InitializationCompleted.

Сообщение Anonymous »

В соответствии с документом Microsoft «Начало работы с webView2 в Windows Forms» (по состоянию на 9 марта 2021 г.) у меня есть следующий код (с не установленным webView2.source; отредактировано из Form.Designer.cs):

Код: Выделить всё

    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"));
}
Я удивлен, увидев исключение в NavigateToString():

Код: Выделить всё

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.
Что с этим делать? Я бы подумал, что CoreWebView2 завершил свою инициализацию, учитывая метку события.
Код работает, если 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»