[dotnetbrowser] Вызов .NET из JavaScript - проблема с потоком
Я использую vb net, по сравнению с 2017 и WPF, без mvvm.
My Wpf Mainwindow содержит элемент управления dotnetbrowser-Webbrowser (только для оценки). Выглядит так:
<wpf:WPFBrowserView x:Name = "WebBrowser1" Background = "Transparent" Panel.ZIndex = "1110"
Margin = "-5,-5,0,0" Grid.ColumnSpan = "2"
BrowserType = "LIGHTWEIGHT" VerticalAlignment = "Top" HorizontalAlignment = "Left"
Width = "300" Height = "300" >
<wpf:WPFBrowserView.Preferences>
<DotNetBrowser:BrowserPreferences TransparentBackground = "True"/>
</wpf:WPFBrowserView.Preferences>
</wpf:WPFBrowserView>
Я определил событие так:
AddHandler WebBrowser1.Browser.ScriptContextCreated,
Sub(sender As Object, e As ScriptContextEventArgs)
Dim value As JSValue = WebBrowser1.Browser.ExecuteJavaScriptAndReturnValue("window")
value.AsObject().SetProperty("Account", New Account())
End Sub
Учетная запись выглядит так:
Public Class Account
Public Sub Save(firstName As String, lastName As String)
Try
MessageBox.Show(firstName & " " & lastName)
Dim freileg As New winLeg(firstName)
freileg.Show()
Catch ex As Exception
l(ex.ToString())
End Try
End class
В окне сообщения правильно отображается имя и фамилия. Но новый WPFWindow (winleg) разбивает ошибку:
Beim aufrufenden Thread muss es sich um einen STA-Thread handeln, da dies für viele Komponenten der Benutzeroberfläche erforderlich ist.
(engl: вызывающий поток должен быть STA, потому что он необходим для многих компонентов пользовательского интерфейса)
Мне нужны возвращенные данные в моем основном потоке wpf-окна. Я на самом деле не привык к потокам (кроме Backgroundworker), поэтому я невежественен. Любая помощь будет оценена по достоинству.
Я пытался. Та же ошибка. Сдаваться.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте вызвать свой код с помощью диспетчера приложений.
Вот пример реализации Account:
Public Class Account
Public Sub Save(firstName As String, lastName As String)
Application.Current.Dispatcher.BeginInvoke(
Sub()
Try
Dim window As New Window()
window.Title = firstName & " " & lastName
window.Width = 320
window.Height = 240
window.Show()
Catch ex As Exception
Debug.WriteLine(ex.ToString())
End Try
End Sub)
End Sub
End Class
Не могли бы вы попробовать решение на основе
Dispatcher.Invokeот dotnetbrowser.support.teamdev.com/support/solutions/articles /…?