Finalize DI: drop transitional VM ctor; harden disposal
Remove the transitional MainWindowViewModel(AppSettings, IStartupTracer) constructor and the _ownsServices flag now that every caller resolves the view model from the container; the container owns and disposes the hardware monitor (driver unload), so the view model no longer disposes it. Make HardwareMonitorService.Dispose idempotent with a _disposed guard, and run provider disposal in a finally block in MainWindow_Closed so the ring0 driver is always unloaded on real exit even if an earlier teardown step throws. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -28,6 +28,7 @@ public sealed class HardwareMonitorService : IHardwareMonitorService
|
||||
private readonly UpdateVisitor _updateVisitor = new();
|
||||
private readonly TreeRebuildCoalescer _treeRebuildCoalescer;
|
||||
private bool _isOpen;
|
||||
private bool _disposed;
|
||||
|
||||
public HardwareMonitorService(AppSettings settings)
|
||||
{
|
||||
@@ -199,6 +200,11 @@ public sealed class HardwareMonitorService : IHardwareMonitorService
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (_disposed)
|
||||
return;
|
||||
|
||||
_disposed = true;
|
||||
|
||||
// Clear before closing so any tree-rebuild task still pending its delay bails instead of rebuilding from a
|
||||
// half-closed Computer.
|
||||
_isOpen = false;
|
||||
|
||||
Reference in New Issue
Block a user