Blazor: компонент не обновляется каждый раз при вращении l oop - PullRequest
1 голос
/ 22 марта 2020

Сейчас я работаю над проектом Blazor и сталкиваюсь с ошибкой. План состоит в том, чтобы обновлять компонент каждую секунду, пока выполняется обновление для l oop. Моя проблема немного сложна, поэтому я воспроизвел эту ошибку в другом проекте:

Файл Calculate.cs, в котором выполняются вычисления:

public class Calculate
{
    public void Calc(Index index)
    {
        for (int i = 0; i < 10; i++)
        {
            Thread.Sleep(1000);
            index.Update(i);
        }
    }
}

Файл index.razor:

<button class="btn btn-primary" @onclick="Test">Click me</button>

<p>Test number: @testNumber</p>

@code
{
    private int testNumber;
    Calculate c = new Calculate();

    public void Test()
    {
        c.Calc(this);   
    }
    public void Update(int i)
    {
        testNumber = i;
        Debug.WriteLine(i);
    }
}

После тестирования консоль отладки печатает числа, как и должно, каждую секунду, начиная с 0-9, но открытый дисплей Blazor печатает только 9, когда вычисления и 10 секунд завершены.

1 Ответ

0 голосов
/ 22 марта 2020

Добавьте это к вашему коду l oop.

StateHasChanged();

Принудительно refre sh.

У меня есть пример, который делает простые анимации, если вы хотите посмотреть на мой спрайт-компонент:

https://github.com/DataJuggler/DataJuggler.Blazor.Components

И видео здесь:

https://www.youtube.com/watch?v=frtetHgfdIo

...