Blazor: опросить объект сервера в промежутке? - PullRequest
1 голос
/ 05 октября 2019

Кажется, что 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();
    }
}

И это не сработало. Я нашел существующий вопрос , но он использует F #, который я не понимаю, и я не знаю, что такое ClientTImer, поэтому ответ мне не помог.

1 Ответ

1 голос
/ 06 октября 2019
t.Elapsed += async (s, e) => 
    { 
       Value = ForecastService.Value; 
       await InvokeAsync(StateHasChanged); 
    };
...