(potentially) fixed object disposed issue with semaphore

fix random issue where we were trying to reset a session for a player that has not fully connected
This commit is contained in:
RaidMax 2019-12-26 18:17:49 -06:00
parent c9e6ce0bca
commit 042fde971e
3 changed files with 7 additions and 8 deletions

View File

@ -57,7 +57,6 @@ namespace IW4MAdmin
Logger.WriteInfo($"Client {client} connected..."); Logger.WriteInfo($"Client {client} connected...");
// Do the player specific stuff // Do the player specific stuff
client.ProcessingEvent = clientFromLog.ProcessingEvent;
client.ClientNumber = clientFromLog.ClientNumber; client.ClientNumber = clientFromLog.ClientNumber;
client.Score = clientFromLog.Score; client.Score = clientFromLog.Score;
client.Ping = clientFromLog.Ping; client.Ping = clientFromLog.Ping;

View File

@ -1072,7 +1072,7 @@ namespace IW4MAdmin.Plugins.Stats.Helpers
foreach (var stat in sv.GetClientsAsList() foreach (var stat in sv.GetClientsAsList()
.Select(_client => _client.GetAdditionalProperty<EFClientStatistics>(CLIENT_STATS_KEY))) .Select(_client => _client.GetAdditionalProperty<EFClientStatistics>(CLIENT_STATS_KEY)))
{ {
stat.StartNewSession(); stat?.StartNewSession();
} }
} }

View File

@ -82,12 +82,12 @@ namespace SharedLibraryCore.Database.Models
{ "_reportCount", 0 } { "_reportCount", 0 }
}; };
ReceivedPenalties = new List<EFPenalty>(); ReceivedPenalties = new List<EFPenalty>();
ProcessingEvent = new SemaphoreSlim(1, 1); _processingEvent = new SemaphoreSlim(1, 1);
} }
~EFClient() ~EFClient()
{ {
ProcessingEvent.Dispose(); _processingEvent.Dispose();
} }
public override string ToString() public override string ToString()
@ -674,11 +674,11 @@ namespace SharedLibraryCore.Database.Models
}; };
[NotMapped] [NotMapped]
public SemaphoreSlim ProcessingEvent; private readonly SemaphoreSlim _processingEvent;
public async Task Lock() public async Task Lock()
{ {
bool result = await ProcessingEvent.WaitAsync(Utilities.DefaultCommandTimeout); bool result = await _processingEvent.WaitAsync(Utilities.DefaultCommandTimeout);
#if DEBUG #if DEBUG
if (!result) if (!result)
@ -690,9 +690,9 @@ namespace SharedLibraryCore.Database.Models
public void Unlock() public void Unlock()
{ {
if (ProcessingEvent.CurrentCount == 0) if (_processingEvent.CurrentCount == 0)
{ {
ProcessingEvent.Release(1); _processingEvent.Release(1);
} }
} }