小编Stu*_*aby的帖子

Blazor UI 未在 StateHasChanged 调用时更新

我有一个来自标准 Blazor 服务器端模板的非常简单的示例,该示例表明即使在 StateHasChanged() 之后,计时器函数也不会更新 UI;已拨打电话。

日志输出显示定时器被触发,如果我等待几秒钟并单击 IncrementCount 按钮,计数值将跳转到计数器已被定时器递增的次数。

很好奇......任何帮助将不胜感激

亲切的问候,斯图尔特

@page "/counter"
@using System.Timers;

@using Microsoft.Extensions.Logging
@inject ILogger<Counter> Logger

<h1>Counter</h1>

<p>Current count: @(currentCount.ToString())</p>

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

@code {
    private int currentCount = 0;

    private void IncrementCount()
    {
        currentCount++;
    }

    public System.Timers.Timer timer;
    protected override async Task OnInitializedAsync()
    {
        timer = new Timer(1000);
        timer.Elapsed += this.OnTimedEvent;
        timer.AutoReset = true;
        timer.Enabled = true;
        timer.Start();
    }

    public void OnTimedEvent(Object source, ElapsedEventArgs e)
    {
        Logger.LogInformation("Timer triggered");
        IncrementCount();
        StateHasChanged();
    }
}
Run Code Online (Sandbox Code Playgroud)

blazor blazor-server-side

4
推荐指数
1
解决办法
1602
查看次数

标签 统计

blazor ×1

blazor-server-side ×1