System.InvalidOperationException при попытке связать событие CefSharp.WPF с ViewModel
У меня есть View с встроенным компонентом CefSharp.WPF, и мне нужно получать уведомление, когда он инициализируется, когда он загружается и т. Д.
Поскольку в Caliburn нет никаких соглашений для этого, я использовал cal:Message.Attach примерно так:
<cefsharp:ChromiumWebBrowser Name="Browser" Visibility="Visible" TabIndex="3"
WebBrowser="{Binding WebBrowser, Mode=OneWayToSource}"
Address="http://localhost:8080/"
Title="{Binding Title, Mode=OneWayToSource}"
cal:Message.Attach="[Event FrameLoadStart] = [Action OnLoading()]"/>
В моей модели просмотра у меня есть простое действие:
public void OnLoading()
{
System.Windows.MessageBox.Show("Loading");
}
Однако, когда я запускаю приложение, оно почти сразу вызывает исключение System.InvalidOperationException, поскольку оно пытается получить доступ к чему-либо в другом потоке.
Исключение System.InvalidOperationException было необработанным. Сообщение: в WindowsBase.dll произошло необработанное исключение типа "System.InvalidOperationException". Дополнительные сведения. Вызывающий поток не может получить доступ к этому объекту, так как он принадлежит другому потоку.
Есть ли способ обойти это - убедиться, что действие вызывается в соответствующем потоке (или наоборот), или есть лучший способ добиться того же эффекта?