Из ViewModel оформлена подписка на события класса C1. В классе C1 запущен асинхронный метод, в процессе работы которого генерируются события. Обработчик изменяет свойство в ViewModel:
private void onBeginLoadProducts()
{
StatusMsg = "Ожидание ответа";
}
private void onEndLoadProducts()
{
StatusMsg = "Ответ получен";
}
....
public string StatusMsg
{
get
{
return this.statusMsg;
}
private set
{
this.statusMsg = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("StatusMsg"));
}
}
На вызове PropertyChanged происходит ошибка:
System.Exception: "Приложение обратилось к интерфейсу, относящемуся к другому потоку. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD))"
К свойству StatusMsg есть привязка(x:Bind) из UI. Я знаю, что обращаться к UI элементам можно только из главного потока, но каким образом решить данную задачу? Объект который генерирует событие, выполняет асинхронный метод, когда закончит неизвестно. А иметь контроль состоянии о выполнении нужно. Спасибо.
Пробросьте в VM диспетчер UI-потока, например, параметром конструктора или получите его внутри VM:
var dispatcher = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;
затем, при необходимости запуска кода в UI-потоке, используйте его:
await dispatcher.RunAsync(
Windows.UI.Core.CoreDispatcherPriority.Normal,
() => StatusMsg = "Ожидание ответа"); // onBeginLoadProducts);
Код после корректировок:
using Windows.UI.Core;
private CoreDispatcher dispatcher = Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher;
private async void OnBeginLoadProducts()
{
await dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => StatusMsg = "Запрос на получение продуктов");
}
у меня есть проблема с игрой на UnityЯ решил сделать небольшую игру типа платформера, есть проблема с прыжком, если очень много раз нажимать...
Нашёл ответ на свой вопрос, вродь) Вот https://stackoverflowcom/questions/1297264/using-custom-fonts-on-a-label-on-winforms
Не могу понять почему не создаётся объект классаОба класса объявлены в одном пространстве имён
На своём сайте я использую Mathquill, который для корректного изображения встраивает стили в код страницыНапример: