Blazor:在一定时间间隔内轮询服务器的对象?

Dam*_*les 6 asp.net-core blazor blazor-client-side

Blazor 似乎使客户端可以轻松地使用下面称为 SignalR 的东西来调用服务器的方法。但是当我搜索 Blazor 是否在另一个方向上这样做时,答案是 Blazor 不会这样做,我必须自己使用 SignalR 来实现它。所以,我想到了投票。

也就是说,我喜欢按一定时间间隔读取服务器对象中的属性或调用方法来确定某些内容是否已更改。为了测试这一点,我将此属性添加到WeatherForecastService类中。每次读取时属性都会增加。

    int _Value = 0;
    public int Value
    {
        get
        {
            _Value++;
            return _Value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

在天气平板电脑示例中,我删除了显示天气的代码并添加了此代码。

<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();
    }
}
Run Code Online (Sandbox Code Playgroud)

但这没有用。我发现了一个现有的问题,但它使用了我不理解的 F#,而且我不知道它是什么ClientTImer,所以答案对我没有帮助。

Hen*_*man 4

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