Synchronisierungs- und Verbindungsstatus verbessert

Neuer Nachrichtentyp SyncStateChangedMessage zur Übermittlung des Sync-Status über das MVVM-Messaging-System eingeführt. GameStateService sendet nach relevanten Aktionen den aktuellen Sync-Status. Methoden zur Synchronisierung sind jetzt thread-sicher und melden Statusänderungen laufend. Fehler beim Senden von Queue-Aktionen werden einzeln behandelt und führen zu Fehlermeldungen im Messenger. ViewModels aktualisieren neue Properties (IsSyncing, SyncStatusText, PendingSyncActions) bei Statusänderungen. XAML-Seiten zeigen Verbindungs- und Sync-Status sowie Offline-Aktionen an. SignalRService meldet Verbindungsstatus konsistenter, auch bei Fehlern und Disconnects.
This commit is contained in:
Tim Krampitz
2026-08-08 21:23:27 +02:00
parent 0f9cc1703a
commit 6f3c0eb716
7 changed files with 141 additions and 24 deletions

View File

@@ -38,6 +38,8 @@ public class SignalRService : ISignalRService
if (_hubConnection is null)
return false;
ConnectionStateChanged?.Invoke(this, false);
try
{
await _hubConnection.StartAsync(cancellationToken);
@@ -46,6 +48,7 @@ public class SignalRService : ISignalRService
}
catch (Exception ex)
{
ConnectionStateChanged?.Invoke(this, false);
ErrorReceived?.Invoke(this, $"SignalR-Verbindung fehlgeschlagen: {ex.Message}");
return false;
}
@@ -56,7 +59,9 @@ public class SignalRService : ISignalRService
if (_hubConnection is null)
return;
await _hubConnection.StopAsync();
if (_hubConnection.State is HubConnectionState.Connected or HubConnectionState.Connecting or HubConnectionState.Reconnecting)
await _hubConnection.StopAsync();
ConnectionStateChanged?.Invoke(this, false);
}