@page "/robot-monitor" @rendermode InteractiveWebAssemblyNoPrerender @inject RobotApp.Client.Services.RobotMonitorService MonitorService @implements IAsyncDisposable Robot Monitor
@code { private RobotMonitorDto? _monitorData; private RobotApp.Client.Pages.Components.Monitor.RobotMonitorView? RobotMonitorViewRef; protected override async Task OnAfterRenderAsync(bool firstRender) { await base.OnAfterRenderAsync(firstRender); if (firstRender) { MonitorService.OnDataReceived += OnMonitorDataReceived; await MonitorService.StartAsync(); } } private void OnMonitorDataReceived(RobotMonitorDto data) { _monitorData = data; RobotMonitorViewRef?.UpdatePath(); StateHasChanged(); } public async ValueTask DisposeAsync() { MonitorService.OnDataReceived -= OnMonitorDataReceived; await MonitorService.StopAsync(); } }