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". Дополнительные сведения. Вызывающий поток не может получить доступ к этому объекту, так как он принадлежит другому потоку.

Есть ли способ обойти это - убедиться, что действие вызывается в соответствующем потоке (или наоборот), или есть лучший способ добиться того же эффекта?

0 ответов

Другие вопросы по тегам