From 574ebc3dd3042bb5bf10b642902d4282c5d03a92 Mon Sep 17 00:00:00 2001 From: laurentiu021 Date: Mon, 22 Jun 2026 15:25:58 +0300 Subject: [PATCH] refactor: seal BulkObservableCollection, ConfigureAwait on awaited service tasks, ToArray for IReadOnlyList returns --- SysManager/SysManager/Helpers/ObservableCollectionExtensions.cs | 2 +- SysManager/SysManager/Services/ActivityLogService.cs | 2 +- SysManager/SysManager/Services/DnsService.cs | 2 +- SysManager/SysManager/Services/LargeFileScanner.cs | 2 +- SysManager/SysManager/Services/PingMonitorService.cs | 2 +- SysManager/SysManager/Services/SpeedTestService.cs | 2 +- SysManager/SysManager/Services/TracerouteMonitorService.cs | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SysManager/SysManager/Helpers/ObservableCollectionExtensions.cs b/SysManager/SysManager/Helpers/ObservableCollectionExtensions.cs index d705bff..8be9eef 100644 --- a/SysManager/SysManager/Helpers/ObservableCollectionExtensions.cs +++ b/SysManager/SysManager/Helpers/ObservableCollectionExtensions.cs @@ -12,7 +12,7 @@ namespace SysManager.Helpers; /// An that supports bulk replacement /// with a single notification. /// -public class BulkObservableCollection : ObservableCollection +public sealed class BulkObservableCollection : ObservableCollection { private bool _suppressNotifications; diff --git a/SysManager/SysManager/Services/ActivityLogService.cs b/SysManager/SysManager/Services/ActivityLogService.cs index a831d00..8f3e476 100644 --- a/SysManager/SysManager/Services/ActivityLogService.cs +++ b/SysManager/SysManager/Services/ActivityLogService.cs @@ -26,7 +26,7 @@ public sealed class ActivityLogService public IReadOnlyList GetRecent(int count = 5) { lock (_lock) - return _entries.Take(count).ToList(); + return _entries.Take(count).ToArray(); } public void Log(string action, string detail) diff --git a/SysManager/SysManager/Services/DnsService.cs b/SysManager/SysManager/Services/DnsService.cs index 1465ffa..04ab411 100644 --- a/SysManager/SysManager/Services/DnsService.cs +++ b/SysManager/SysManager/Services/DnsService.cs @@ -114,7 +114,7 @@ public async Task> CaptureCurrentServersAsync(Cancellation .Select(r => r?.ToString()) .Where(s => !string.IsNullOrWhiteSpace(s) && IPAddress.TryParse(s, out _)) .Select(s => s!) - .ToList(); + .ToArray(); } finally { _gate.Release(); } } diff --git a/SysManager/SysManager/Services/LargeFileScanner.cs b/SysManager/SysManager/Services/LargeFileScanner.cs index df70e60..0c675ac 100644 --- a/SysManager/SysManager/Services/LargeFileScanner.cs +++ b/SysManager/SysManager/Services/LargeFileScanner.cs @@ -133,7 +133,7 @@ private static IReadOnlyList Scan( } progress?.Report(new LargeFileProgress(scanned, bytesScanned, "Done")); - return heap.Reverse().Select(h => meta[h.Path]).ToList(); + return heap.Reverse().Select(h => meta[h.Path]).ToArray(); } private static bool ShouldSkip(string path) diff --git a/SysManager/SysManager/Services/PingMonitorService.cs b/SysManager/SysManager/Services/PingMonitorService.cs index e3f0b5b..8a0f411 100644 --- a/SysManager/SysManager/Services/PingMonitorService.cs +++ b/SysManager/SysManager/Services/PingMonitorService.cs @@ -91,7 +91,7 @@ static TimeSpan Clamp(TimeSpan t) => foreach (var target in active) _ = PingOnceAsync(target, ct); - try { await Task.Delay(Clamp(Interval), ct); } + try { await Task.Delay(Clamp(Interval), ct).ConfigureAwait(false); } catch (OperationCanceledException) { return; } } } diff --git a/SysManager/SysManager/Services/SpeedTestService.cs b/SysManager/SysManager/Services/SpeedTestService.cs index 911318e..be9e28c 100644 --- a/SysManager/SysManager/Services/SpeedTestService.cs +++ b/SysManager/SysManager/Services/SpeedTestService.cs @@ -95,7 +95,7 @@ private static async Task MeasureDownloadAsync( } }); - await Task.WhenAll(tasks); + await Task.WhenAll(tasks).ConfigureAwait(false); sw.Stop(); var downloaded = Interlocked.Read(ref totalBytes); diff --git a/SysManager/SysManager/Services/TracerouteMonitorService.cs b/SysManager/SysManager/Services/TracerouteMonitorService.cs index 15b7bd8..879757b 100644 --- a/SysManager/SysManager/Services/TracerouteMonitorService.cs +++ b/SysManager/SysManager/Services/TracerouteMonitorService.cs @@ -100,7 +100,7 @@ private async Task PumpAsync(CancellationToken ct) catch (InvalidOperationException) { /* traceroute failed for this target — skip */ } } - try { await Task.Delay(Interval, ct); } + try { await Task.Delay(Interval, ct).ConfigureAwait(false); } catch (OperationCanceledException) { return; } } }