diff --git a/.github/workflows/dotnet-desktop.yml b/.github/workflows/dotnet-desktop.yml
index 052ed34..61c7232 100644
--- a/.github/workflows/dotnet-desktop.yml
+++ b/.github/workflows/dotnet-desktop.yml
@@ -43,6 +43,8 @@ jobs:
- name: Create Release
id: create_release
uses: actions/create-release@v1
+ permissions:
+ contents: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
@@ -54,6 +56,8 @@ jobs:
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
+ permissions:
+ contents: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
diff --git a/.semver.txt b/.semver.txt
index 90a27f9..af0b7dd 100644
--- a/.semver.txt
+++ b/.semver.txt
@@ -1 +1 @@
-1.0.5
+1.0.6
diff --git a/src/MonsterMonitor/MonsterMonitor.csproj b/src/MonsterMonitor/MonsterMonitor.csproj
index 511d4ae..d113f55 100644
--- a/src/MonsterMonitor/MonsterMonitor.csproj
+++ b/src/MonsterMonitor/MonsterMonitor.csproj
@@ -6,10 +6,10 @@
7.3
MonsterMonitor
MonsterMonitor
- 1.0.5
- 1.0.5
- 1.0.5
- 1.0.5
+ 1.0.6
+ 1.0.6
+ 1.0.6
+ 1.0.6
diff --git a/src/MonsterMonitor/UI/MainForm.cs b/src/MonsterMonitor/UI/MainForm.cs
index caa434b..b31e315 100644
--- a/src/MonsterMonitor/UI/MainForm.cs
+++ b/src/MonsterMonitor/UI/MainForm.cs
@@ -13,6 +13,7 @@ namespace MonsterMonitor.UI
private readonly Button _btnSettings = new Button();
private readonly Button _btnExit = new Button();
private readonly NotifyIcon _notifyIcon = new NotifyIcon();
+ private readonly Timer _updateTimer = new Timer();
private readonly Icon _trayIcon;
private readonly LogService _log = new LogService();
private readonly PowerManagementService _power = new PowerManagementService();
@@ -20,6 +21,7 @@ namespace MonsterMonitor.UI
private AppController _controller;
private AppSettings _settings;
private bool _allowClose;
+ private bool _isUpdateCheckRunning;
public MainForm()
{
@@ -43,7 +45,8 @@ namespace MonsterMonitor.UI
_controller = new AppController(_log, _power);
_updateService = new GitHubUpdateService(_log);
RestartServices();
- _ = RunUpdateCheckAsync();
+ ConfigureUpdateTimer();
+ _ = RunUpdateCheckAsync(true);
}
private void BuildUi()
@@ -148,6 +151,8 @@ namespace MonsterMonitor.UI
}
_notifyIcon.Visible = false;
+ _updateTimer.Stop();
+ _updateTimer.Dispose();
_controller?.Dispose();
_trayIcon?.Dispose();
}
@@ -168,11 +173,40 @@ namespace MonsterMonitor.UI
_console.ScrollToCaret();
}
- private async Task RunUpdateCheckAsync()
+ private void ConfigureUpdateTimer()
{
- // Небольшая задержка, чтобы окно и лог уже успели инициализироваться.
- await Task.Delay(1000);
- await _updateService.CheckAndPrepareUpdateAsync();
+ _updateTimer.Interval = (int)TimeSpan.FromHours(1).TotalMilliseconds;
+ _updateTimer.Tick += async (_, __) => await RunUpdateCheckAsync(false);
+ _updateTimer.Start();
+ _log.Info("Автопроверка обновлений включена (раз в 1 час).");
+ }
+
+ private async Task RunUpdateCheckAsync(bool isInitialCheck)
+ {
+ if (_isUpdateCheckRunning)
+ {
+ return;
+ }
+
+ try
+ {
+ _isUpdateCheckRunning = true;
+ if (isInitialCheck)
+ {
+ // Небольшая задержка, чтобы окно и лог уже успели инициализироваться.
+ await Task.Delay(1000);
+ }
+ else
+ {
+ _log.Info("Плановая проверка обновлений...");
+ }
+
+ await _updateService.CheckAndPrepareUpdateAsync();
+ }
+ finally
+ {
+ _isUpdateCheckRunning = false;
+ }
}
private static Color GetColor(LogLevel level)