日常更新
This commit is contained in:
@@ -1,27 +1,27 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Worker">
|
||||
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);NU1701</NoWarn>
|
||||
<TargetFramework>net8.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<RootNamespace>ChromeboxFanControlService</RootNamespace>
|
||||
<AssemblyName>ChromeboxFanControlService</AssemblyName>
|
||||
<OutputType>Exe</OutputType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ChromeboxFanControl\ChromeboxFanControl.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Remove="appsettings.json" />
|
||||
</ItemGroup>
|
||||
<!-- appsettings comes from ChromeboxFanControl when merged in dist; service uses that or ProgramData config -->
|
||||
|
||||
</Project>
|
||||
<Project Sdk="Microsoft.NET.Sdk.Worker">
|
||||
|
||||
<PropertyGroup>
|
||||
<NoWarn>$(NoWarn);NU1701</NoWarn>
|
||||
<TargetFramework>net8.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<RootNamespace>ChromeboxFanControlService</RootNamespace>
|
||||
<AssemblyName>ChromeboxFanControlService</AssemblyName>
|
||||
<OutputType>Exe</OutputType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting" Version="8.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="8.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ChromeboxFanControl\ChromeboxFanControl.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Remove="appsettings.json" />
|
||||
</ItemGroup>
|
||||
<!-- appsettings comes from ChromeboxFanControl when merged in dist; service uses that or ProgramData config -->
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,43 +1,43 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
using ChromeboxFanControlService;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
var host = Host.CreateDefaultBuilder(args)
|
||||
.UseWindowsService(options =>
|
||||
{
|
||||
options.ServiceName = "ChromeboxFanControl";
|
||||
})
|
||||
.ConfigureServices(services =>
|
||||
{
|
||||
services.AddHostedService<FanControlWorker>();
|
||||
})
|
||||
.Build();
|
||||
|
||||
await host.RunAsync();
|
||||
using ChromeboxFanControlService;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
var host = Host.CreateDefaultBuilder(args)
|
||||
.UseWindowsService(options =>
|
||||
{
|
||||
options.ServiceName = "ChromeboxFanControl";
|
||||
})
|
||||
.ConfigureServices(services =>
|
||||
{
|
||||
services.AddHostedService<FanControlWorker>();
|
||||
})
|
||||
.Build();
|
||||
|
||||
await host.RunAsync();
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"EctoolPath": "C:\\Program Files\\crosec\\ectool.exe",
|
||||
"PollIntervalMs": 1500,
|
||||
"FanRpmPollEveryNCycles": 1,
|
||||
"FanRpmArgs": [ "pwmgetfanrpm", "0" ],
|
||||
"FanDutyArgs": null,
|
||||
"AutoFanCtrlArgs": [ "autofanctrl" ],
|
||||
"TempSource": "AverageCore",
|
||||
"FailSafeAfterConsecutiveErrors": 5,
|
||||
"FailSafeFanPercent": 100,
|
||||
"FailSafeRestoreAutoFan": false,
|
||||
"ChartHistoryMinutes": 15,
|
||||
"ChartMaxPoints": 900,
|
||||
"CurvePoints": [ 0, 0, 10, 25, 40, 55, 70, 80, 90, 95, 97, 98, 99, 100 ]
|
||||
}
|
||||
{
|
||||
"EctoolPath": "C:\\Program Files\\crosec\\ectool.exe",
|
||||
"PollIntervalMs": 1500,
|
||||
"FanRpmPollEveryNCycles": 1,
|
||||
"FanRpmArgs": [ "pwmgetfanrpm", "0" ],
|
||||
"FanDutyArgs": null,
|
||||
"AutoFanCtrlArgs": [ "autofanctrl" ],
|
||||
"TempSource": "AverageCore",
|
||||
"FailSafeAfterConsecutiveErrors": 5,
|
||||
"FailSafeFanPercent": 100,
|
||||
"FailSafeRestoreAutoFan": false,
|
||||
"ChartHistoryMinutes": 15,
|
||||
"ChartMaxPoints": 900,
|
||||
"CurvePoints": [ 0, 0, 10, 25, 40, 55, 70, 80, 90, 95, 97, 98, 99, 100 ]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user