diff --git a/MareSynchronos/PlayerData/Pairs/Pair.cs b/MareSynchronos/PlayerData/Pairs/Pair.cs index c215361..b227a12 100644 --- a/MareSynchronos/PlayerData/Pairs/Pair.cs +++ b/MareSynchronos/PlayerData/Pairs/Pair.cs @@ -192,11 +192,12 @@ public class Pair return UserPair != null || GroupPair.Any(); } - public void MarkOffline() + public void MarkOffline(bool wait = true) { try { - _creationSemaphore.Wait(); + if (wait) + _creationSemaphore.Wait(); _onlineUserIdentDto = null; LastReceivedCharacterData = null; var player = CachedPlayer; @@ -205,7 +206,8 @@ public class Pair } finally { - _creationSemaphore.Release(); + if (wait) + _creationSemaphore.Release(); } } diff --git a/MareSynchronos/PlayerData/Pairs/PairManager.cs b/MareSynchronos/PlayerData/Pairs/PairManager.cs index 5f717d8..1818d7a 100644 --- a/MareSynchronos/PlayerData/Pairs/PairManager.cs +++ b/MareSynchronos/PlayerData/Pairs/PairManager.cs @@ -356,7 +356,7 @@ public sealed class PairManager : DisposableMediatorSubscriberBase Logger.LogDebug("Disposing all Pairs"); Parallel.ForEach(_allClientPairs, item => { - item.Value.MarkOffline(); + item.Value.MarkOffline(wait: false); }); RecreateLazy();