Я пытаюсь изменить изменить строку, используемую для заголовка, в моем приложении Blazor на стороне сервера. Но у меня возникают проблемы с обновлением пользовательского интерфейса.
Я пытался использовать StateHasChanged (), но это не сработало, поэтому я осмотрелся и обнаружил, что на демонстрации FlightFinder , которая была сделана, она имеет событие OnChange Action, поэтому я пытаюсь реализовать что.
Работает до тех пор, пока я не попытаюсь обновить браузер, а затем появляется эта ошибка
System.InvalidOperationException: 'Текущий поток не связан с контекстом синхронизации средства визуализации. Используйте Invoke () или InvokeAsync (), чтобы переключить выполнение в контекст синхронизации рендерера при запуске рендеринга или изменении любого состояния, доступного во время рендеринга. '
Вот что у меня есть:
private string _title = "TestSite";
public string Title => _title;
public event Action OnChange;
public void ChangePage(string pageName)
{
_title = pageName;
NotifyStateChanged();
}
private void NotifyStateChanged(int navigationType = 0)
{
OnChange?.Invoke();
}
Все, что мне нужно сделать, это вызвать ChangePage («заголовок страницы»), и это работает, если, как я уже говорил, я не пытаюсь обновить.
Я просто пытаюсь изменить строку в одном компоненте через другой компонент, что звучит не так уж и безумно. Если есть лучший способ сделать заголовки или изменить что-либо из других компонентов, я хотел бы услышать об этом.
Итак, что я могу сделать, чтобы убедиться, что метод m invoke находится в правильном потоке?
Или есть другой способ изменить заголовок, который был бы более эффективным?
Заранее спасибо!