powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Blazor. Не обновляется значение GUI елемента
4 сообщений из 4, страница 1 из 1
Blazor. Не обновляется значение GUI елемента
    #39918119
Фотография Renziglov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Есть такой 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
Blazor. Не обновляется значение GUI елемента
    #39918508
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если так?

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

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

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
Blazor. Не обновляется значение GUI елемента
    #39921872
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, что там? кагдила?
до сих пор "выкидывает"?
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Blazor. Не обновляется значение GUI елемента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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