我对blazor很陌生,无法找到以下主题的正确答案:
用例:
blazor服务器应用程序读取传感器值并将其显示在UI上。
当传感器值发生变化时,应更新UI。
找到的解决方案:
a) 当传感器值发生变化时,使用SignalR Hub更新UI
剃须刀组件:
protected override async Task OnInitializedAsync()
{
sensorServiceHub= new HubConnectionBuilder()
.WithUrl(NavigationManager.ToAbsoluteUri("/sensorServiceHub"))
.Build();
sensorServiceHub.On("changed", () =>
{
StateHasChanged();
});
await sensorServiceHub.StartAsync();
}
b) 传感器值是一个具有操作委托的属性,该操作委托在更改时被调用。在UI组件中,我们向该委托添加一个方法来更新它。
剃须刀组件:
protected override async Task OnInitializedAsync()
{
SensorService.OnValueChanged += () =>
{
InvokeAsync(this.StateHasChanged);
};
}
问题
我什么时候应该使用哪种解决方案?或者还有其他解决方案吗?
我尝试了两种变体,都奏效了。是否存在性能差异?
很抱歉,如果问题太基本。。。