asp.net-core - Blazor:每隔一段时间轮询服务器的对象?

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

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

也就是说,我喜欢每隔一段时间读取服务器对象中的一个属性或调用一个方法,以确定某些内容是否发生了变化。为了测试这一点,我将此属性添加到 WeatherForecastService类(class)。每次读取时属性都会增加。

    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是,所以答案对我没有帮助。

最佳答案

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

关于asp.net-core - Blazor:每隔一段时间轮询服务器的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58249828/

相关文章:

c# - Blazor 中有没有办法提示用户浏览到本地文件夹并选择它来下载文件?

blazor - 如何声明 Blazor 组件<TData,TValue>?

asp.net-core - 在 Blazor WebAssembly 解决方案中,如何在与服务器 API 不同的端口上托管 Blazor WASM 客户端应用程序

c# - 如何存储/检索大量用户身份声明

asp.net-core - 身份服务器4 : No storage mechanism for grants specified - use AddInMemoryStores

asp.net-core - NLog 初始发送和多次批量发送电子邮件

ubuntu - 如何在 Nginx 服务器上运行多个 asp.net core 应用程序

azure - Blazor Azure AD B2C net 5 尝试登录时出错

razor - 如何在 Blazor 客户端应用程序中使用 Bootstrap 模式?

blazor - 单个 Blazor 项目是否可以同时包含 WebAssembly 部分和服务器端部分?