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:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user