Невозможно изменить свойство WPF из события веб-сокета - PullRequest
0 голосов
/ 03 августа 2020
• 1000 вверх по этой статье Microsoft: https://docs.microsoft.com/en-us/dotnet/api/system.invalidoperationexception?view=netcore-3.1

Они сказали, что я могу использовать Dispatcher.Invoke для удаления исключения (как показано на скриншоте). Я сделал это в потоке рендеринга, но все равно получаю сообщение об ошибке.

введите здесь описание изображения

Во-вторых, я попытался вызвать функцию отправки потока в основной поток, который привел к ошибке в предпринятом решении. Как ни странно, у меня был доступ для изменения свойства в соответствии с отладкой печати, которую я сделал.

введите здесь описание изображения

1 Ответ

0 голосов
/ 03 августа 2020

Вам нужно использовать диспетчер потока, который изначально создал объект, который, как я полагаю, будет потоком пользовательского интерфейса, поскольку вы устанавливаете изображение. При прямом вызове диспетчера из класса stati c вы всегда получаете тот, который фактически назначен фактическому потоку, что означает, что вам потребуется ссылка на диспетчер потока, которому принадлежит объект.

DispatcherPriority.Render не говорит, что вы хотите выполнить его в потоке рендеринга, но он устанавливает приоритет, когда он должен быть выполнен, вы уточняете об этом в msdn .

Чтобы получить доступ к Диспетчер потока пользовательского интерфейса, вы можете использовать приведенный ниже код, но тогда поток пользовательского интерфейса действительно должен быть владельцем объекта, который вы устанавливаете

Application.Current.Dispatcher.Invoke(action);
...