Beenden haengt nicht mehr, Update-Agent startet erst nach Bestaetigung
Beim Updatetest auf der Linux-VM (14.09.2026) zeigte sich zweierlei: 1. Nach "Beenden" blieb der Prozess unbegrenzt stehen - Fenster offen, Port zu, Main-Thread in host.StopAsync(...).GetResult(), selbst SIGTERM ohne Wirkung. Betraf jedes Beenden der Oberflaeche, nicht nur den Update-Weg. Der Main-Thread traegt nach StartWithClassicDesktopLifetime noch Avalonias SynchronizationContext, dessen Dispatcher nicht mehr pumpt. Der Stopp laeuft jetzt per Task.Run ohne diesen Kontext, mit Obergrenze 45 s und Log der Dauer. 2. Der update-agent startete schon beim Klick auf "Installieren". Seine 40 s Wartefrist verstrichen waehrend Download und 10-Sekunden-Sperre, er brach ohne Update ab. Er startet jetzt erst nach bestaetigtem Beenden, Frist 120 s. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -269,7 +269,12 @@ namespace PolyTrader.App.Avalonia.Views
|
||||
try { licenseKey = SecretProtection.Unprotect(settings?.LicenseKey ?? string.Empty); }
|
||||
catch { /* siehe CheckForUpdateAsync */ }
|
||||
|
||||
UpdateClient.LaunchUpdateAgent(
|
||||
// Derselbe Weg wie ein Klick auf "Beenden" - inklusive Sicherheitsabfrage. Der Agent startet
|
||||
// aber erst NACH deren Bestätigung: Am 14.09.2026 lief er schon beim Klick auf "Installieren"
|
||||
// los, seine 40 s Wartefrist verstrichen während Download und 10-Sekunden-Sperre, und er
|
||||
// brach ohne Update ab. 120 s decken das Herunterfahren ab (Dienste bis 45 s, siehe
|
||||
// Program.Main); läuft die Anwendung danach noch, verändert der Agent nichts.
|
||||
Func<bool> launchAgent = () => UpdateClient.LaunchUpdateAgent(
|
||||
agentPath: agentPath,
|
||||
projectId: dcOptions.ProjectSlug,
|
||||
channel: dcOptions.Channel,
|
||||
@@ -278,12 +283,13 @@ namespace PolyTrader.App.Avalonia.Views
|
||||
currentVersion: BuildInfo.Version,
|
||||
exitCurrentApp: false,
|
||||
waitForCurrentProcess: true,
|
||||
waitTimeoutSeconds: 40,
|
||||
waitTimeoutSeconds: 120,
|
||||
licenseKey: licenseKey);
|
||||
|
||||
// Derselbe Weg wie ein Klick auf "Beenden" - inklusive Sicherheitsabfrage. Der Agent
|
||||
// wartet ohnehin per --wait-for-pid auf unser Prozessende.
|
||||
_uiHost.RequestShutdown();
|
||||
if (_uiHost is AvaloniaUiHost shell)
|
||||
shell.RequestShutdown(onConfirmed: launchAgent);
|
||||
else if (launchAgent())
|
||||
_uiHost.RequestShutdown();
|
||||
}
|
||||
|
||||
// ===== Account-Übersicht =====
|
||||
|
||||
Reference in New Issue
Block a user