remove waiting semaphore for marking offline when disposing

This commit is contained in:
Stanley Dimant
2025-01-15 09:26:52 +01:00
parent 860e074d53
commit d732e0439f
2 changed files with 6 additions and 4 deletions

View File

@@ -185,11 +185,12 @@ public class Pair
return UserPair.Groups.Any() || UserPair.IndividualPairStatus != IndividualPairStatus.None; return UserPair.Groups.Any() || UserPair.IndividualPairStatus != IndividualPairStatus.None;
} }
public void MarkOffline() public void MarkOffline(bool wait = true)
{ {
try try
{ {
_creationSemaphore.Wait(); if (wait)
_creationSemaphore.Wait();
LastReceivedCharacterData = null; LastReceivedCharacterData = null;
var player = CachedPlayer; var player = CachedPlayer;
CachedPlayer = null; CachedPlayer = null;
@@ -198,7 +199,8 @@ public class Pair
} }
finally finally
{ {
_creationSemaphore.Release(); if (wait)
_creationSemaphore.Release();
} }
} }

View File

@@ -356,7 +356,7 @@ public sealed class PairManager : DisposableMediatorSubscriberBase
Logger.LogDebug("Disposing all Pairs"); Logger.LogDebug("Disposing all Pairs");
Parallel.ForEach(_allClientPairs, item => Parallel.ForEach(_allClientPairs, item =>
{ {
item.Value.MarkOffline(); item.Value.MarkOffline(wait: false);
}); });
RecreateLazy(); RecreateLazy();