Files
chromebox-fan-control-win/ChromeboxFanControlService/FanControlWorker.cs
2026-03-22 12:33:04 +08:00

44 lines
1.0 KiB
C#

using ChromeboxFanControl;
namespace ChromeboxFanControlService;
public sealed class FanControlWorker : BackgroundService
{
private FanController? _fan;
private AppConfig? _config;
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
_config = AppConfig.LoadMerged();
_fan = new FanController(_config);
_fan.Start();
try
{
await Task.Delay(Timeout.Infinite, stoppingToken);
}
catch (OperationCanceledException)
{
/* shutdown */
}
}
public override async Task StopAsync(CancellationToken cancellationToken)
{
_fan?.Stop();
_fan?.Dispose();
if (_config != null)
{
try
{
EctoolRunner.RunSync(_config.EctoolPath, _config.AutoFanCtrlArgs);
}
catch
{
/* best effort restore autofan on shutdown */
}
}
await base.StopAsync(cancellationToken);
}
}