diff --git a/src/BootstrapBlazor.Server/Components/Samples/NetworkMonitors.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/NetworkMonitors.razor.cs index c1d2c7c6fd6..902ffa73bd1 100644 --- a/src/BootstrapBlazor.Server/Components/Samples/NetworkMonitors.razor.cs +++ b/src/BootstrapBlazor.Server/Components/Samples/NetworkMonitors.razor.cs @@ -13,7 +13,7 @@ public partial class NetworkMonitors : IDisposable [Inject, NotNull] private INetworkMonitorService? NetworkMonitorService { get; set; } - private ConsoleLogger _logger = null!; + private ConsoleLogger? _logger; /// /// @@ -27,7 +27,7 @@ protected override async Task OnInitializedAsync() private Task OnNetworkStateChanged(NetworkMonitorState state) { - _logger.Log($"Online: NetworkType: {state.NetworkType} Downlink: {state.Downlink} RTT: {state.RTT}"); + _logger?.Log($"Online: NetworkType: {state.NetworkType} Downlink: {state.Downlink} RTT: {state.RTT}"); return Task.CompletedTask; } diff --git a/src/BootstrapBlazor/Services/DefaultNetworkMonitorService.cs b/src/BootstrapBlazor/Services/DefaultNetworkMonitorService.cs index d86d7f184ed..a172a121b4a 100644 --- a/src/BootstrapBlazor/Services/DefaultNetworkMonitorService.cs +++ b/src/BootstrapBlazor/Services/DefaultNetworkMonitorService.cs @@ -21,6 +21,7 @@ class DefaultNetowrkMonitorService : INetworkMonitorService, IAsyncDisposable private readonly ConcurrentDictionary> _callbacks = new(); private bool _init = false; private readonly SemaphoreSlim _semaphoreSlim = new(1, 1); + private NetworkMonitorState? _state; public DefaultNetowrkMonitorService(IJSRuntime jsRuntime) { @@ -47,10 +48,14 @@ public async Task GetNetworkMonitorState(CancellationToken public async Task RegisterStateChangedCallback(IComponent component, Func callback) { _callbacks.AddOrUpdate(component, key => callback, (k, v) => callback); + if (_state != null) + { + await callback(_state); + } if (!_init) { - await _semaphoreSlim.WaitAsync(); + await _semaphoreSlim.WaitAsync(3000); if (!_init) { _init = true; @@ -82,6 +87,7 @@ public void UnregisterStateChangedCallback(IComponent component) [JSInvokable] public async Task TriggerNetworkStateChanged(NetworkMonitorState state) { + _state = state; foreach (var callback in _callbacks.Values) { if (callback != null)