Blazor:间隔轮询服务器的对象吗?

时间:2019-10-05 15:38:28

标签: asp.net-core blazor blazor-client-side

Blazor似乎使客户端更容易使用下面的SignalR调用服务器的方法。但是,当我搜索Blazor是否朝另一个方向执行此操作时,答案是Blazor没有这样做,我必须自己使用SignalR来实现。所以,我想到了投票。

也就是说,我喜欢每隔一段时间读取服务器对象中的属性或调用一个方法,以确定是否发生了更改。为了对此进行测试,我将此属性添加到WeatherForecastService类中。每次读取时,该属性都会增加。

    int _Value = 0;
    public int Value
    {
        get
        {
            _Value++;
            return _Value;
        }
    }

在天气记录板示例中,我删除了显示天气的代码并添加了它。

<p>This component demonstrates fetching data from a service.</p>

<div>Value = @this.Value</div>

@code {
    private int Value = 0;

    protected override async Task OnInitializedAsync()
    {
        System.Timers.Timer t = new System.Timers.Timer();
        t.Elapsed += (s, e) => { Value = ForecastService.Value; };
        t.Interval = 1000;
        t.Start();
    }
}

它没有用。我找到了existing question,但是它使用的F#是我不理解的,而且我不知道ClientTImer是什么,所以答案对我没有帮助。

1 个答案:

答案 0 :(得分:1)

t.Elapsed += async (s, e) => 
    { 
       Value = ForecastService.Value; 
       await InvokeAsync(StateHasChanged); 
    };