【问题标题】:How to update server-side changes on the client side for Blazor Server app?如何在 Blazor Server 应用程序的客户端更新服务器端更改?
【发布时间】:2019-09-30 19:38:41
【问题描述】:

我的 ChangeValues 服务器端事件每 5 秒发生一次,但在客户端,我只看到 number 变量的第一个值。 见下面的代码

@page "/"
<button class="btn btn-primary" @onclick="ChangeValues">Click me</button>
<b>@number</b>
@code {
    double number;
    private Random rnd = new Random();
    private System.Threading.Timer _timer;
    void ChangeValues()
    {
        number = rnd.NextDouble();
        Console.WriteLine(number);
    }
    private void DoWork(object state)
    {
        ChangeValues();
    }
    protected override async Task OnInitializedAsync()
    {
        _timer = new System.Threading.Timer(DoWork, null, TimeSpan.Zero, 
            TimeSpan.FromSeconds(5));
    }
}

【问题讨论】:

    标签: blazor blazor-server-side


    【解决方案1】:

    当您使用计时器(将在另一个线程上触发)时,您必须使用 Invoke 调用 StateHasChanged():

    private async void DoWork(object state)
    {
        ChangeValues();
        await InvokeAsync(StateHasChanged);        
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-29
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多