Я пытаюсь показать модальное диалоговое окно (ShowDialog), созданное как WinForm. Диалоговое окно содержит элемент управления WebView2, который я хочу заполнить с помощью NavigateToString. Я установил для свойства Source элемента управления WebView2 значение «about:blank», но когда я добираюсь до Form_Shown() в форме диалогового окна (как предложено здесь: COMException: невозможно изменить режим потока после того, как он установлен в SureCoreWebView2Async(null) C#), CoreWebView2 имеет значение null. Я попытался вызвать await SureCoreWebView2Async() в Form_Load, как это было предложено, но получил COMException, упомянутое в заголовке. Я пытался сделать это из делегата (form.Invoke или webView2Body.Invoke), который, как я думал, поместит код в поток пользовательского интерфейса элемента управления, но я все равно получаю то же исключение. Как заставить это работать?
Вот код, который создает и отображает диалоговое окно:
Код: Выделить всё
Form2 formAsk = new Form2();
formAsk.Body = mailItem.Body;
DialogResult result = formAsk.ShowDialog();
Вот код внутри формы:
Код: Выделить всё
private void Form2_Load(object sender, EventArgs e)
{
this.Invoke((MethodInvoker)(delegate { EnsureCoreWebView2(); }));
Console.Write("Form2_Load is done");
}
private async void EnsureCoreWebView2()
{
await webView2Body.EnsureCoreWebView2Async();
Console.Write("EnsureCoreWebView2Async is done");
}
private void Form2_Shown(object sender, EventArgs e)
{
Console.Write("Form2_Shown is starting");
webView2Body.NavigateToString(Body);
}
.
Подробнее здесь:
https://stackoverflow.com/questions/798 ... ebview2asy