Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Blazor. Не обновляется значение GUI елемента / 4 сообщений из 4, страница 1 из 1
23.01.2020, 22:13
    #39918119
Renziglov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blazor. Не обновляется значение GUI елемента
Привет.
Есть такой BlazorComponent:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
@page "/Chronometer/ChronometerPage"
@using BlazorTestApp1.Data.Chronometer
@using BlazorTestApp1.Classes
@inject BlazorTestApp1.Classes.TimeoutHelper toh
@inject ChronometerService ChronometerServiceInstance

<h3>Chronometer</h3>


<p>Current Time: @item.CurrentTimeAsString</p>
<button class="btn btn-primary" @onclick="ChangeTime">Click me for current time</button>

@code {
    private ChronometerPOCO item;
    protected override async Task OnInitializedAsync()
    {
        item = await ChronometerServiceInstance.GetTimeAsync();
        poll();
    }

    private void poll()
    {
        new TimeoutHelper().SetTimer(1000, () =>
        {
            item = ChronometerServiceInstance.GetTime();
            poll();
        });
    }

    private async Task ChangeTime()
    {
        item = ChronometerServiceInstance.GetTime();
    }

}



Как видите, он по таймеру должен обновлять значение текщего времени в элементе <p>
Не обновляет. В отладчике вижу, что таймер тикает, item.CurrentTimeAsString меняется каждую секунду, но на экране ничего не меняется.
В порядке эксперимента добавил кнопку. Кликаю на ней - все меняется, время отображается верно.
В чем может быть проблема?
Спасибо.
...
Рейтинг: 0 / 0
24.01.2020, 18:06
    #39918508
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blazor. Не обновляется значение GUI елемента
А если так?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
 private void poll()
    {
        new TimeoutHelper().SetTimer(1000, () =>
        {
            item = ChronometerServiceInstance.GetTime();
            StateHasChanged();//<----------------------------------------------
            poll();
        });
    }
...
Рейтинг: 0 / 0
24.01.2020, 19:24
    #39918543
Renziglov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blazor. Не обновляется значение GUI елемента
Ролг Хупин,

Близко. Но пока выкидывает

The current thread is not associated with the Dispatcher. Use InvokeAsync() to switch execution to the Dispatcher when triggering rendering or component state

Какой синтаксис для InvokeAsync? Пробую

Dispatcher.InvokeAsync(() =>
{
ChronometerServiceInstance.GetTime();
StateHasChanged();
poll();
});

Не воспринимает Action, хочет Task. Хотя имеется Action обьявление:

public abstract Task InvokeAsync(Action workItem);
public abstract Task InvokeAsync(Func<Task> workItem);
...
Рейтинг: 0 / 0
03.02.2020, 15:41
    #39921872
Ролг Хупин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blazor. Не обновляется значение GUI елемента
Ну, что там? кагдила?
до сих пор "выкидывает"?
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Blazor. Не обновляется значение GUI елемента / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]