diff --git a/MareSynchronos/PlayerData/Pairs/Pair.cs b/MareSynchronos/PlayerData/Pairs/Pair.cs index 7fb2455..e180401 100644 --- a/MareSynchronos/PlayerData/Pairs/Pair.cs +++ b/MareSynchronos/PlayerData/Pairs/Pair.cs @@ -185,11 +185,12 @@ public class Pair return UserPair.Groups.Any() || UserPair.IndividualPairStatus != IndividualPairStatus.None; } - public void MarkOffline() + public void MarkOffline(bool wait = true) { try { - _creationSemaphore.Wait(); + if (wait) + _creationSemaphore.Wait(); LastReceivedCharacterData = null; var player = CachedPlayer; CachedPlayer = null; @@ -198,7 +199,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 2d4ec6d..44c1269 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();