1
0
mirror of https://github.com/RaidMax/IW4M-Admin.git synced 2025-06-10 15:20:48 -05:00

small optimizations

This commit is contained in:
RaidMax
2022-02-02 16:21:08 -06:00
parent 6e29d75df2
commit 04b5bd0e73
3 changed files with 72 additions and 32 deletions

View File

@ -249,7 +249,7 @@ namespace SharedLibraryCore
}
private static long NextEventId;
private readonly ManualResetEvent _eventFinishedWaiter;
private readonly SemaphoreSlim _eventFinishedWaiter = new(0, 1);
public string Data; // Data is usually the message sent by player
public string Message;
public EFClient Origin;
@ -260,10 +260,14 @@ namespace SharedLibraryCore
public GameEvent()
{
_eventFinishedWaiter = new ManualResetEvent(false);
Time = DateTime.UtcNow;
Id = GetNextEventId();
}
~GameEvent()
{
_eventFinishedWaiter.Dispose();
}
public EventSource Source { get; set; }
@ -299,15 +303,12 @@ namespace SharedLibraryCore
return Interlocked.Increment(ref NextEventId);
}
~GameEvent()
{
_eventFinishedWaiter.Set();
_eventFinishedWaiter.Dispose();
}
public void Complete()
{
_eventFinishedWaiter.Set();
if (_eventFinishedWaiter.CurrentCount == 0)
{
_eventFinishedWaiter.Release();
}
}
public async Task<GameEvent> WaitAsync()
@ -325,7 +326,7 @@ namespace SharedLibraryCore
Utilities.DefaultLogger.LogDebug("Begin wait for event {Id}", Id);
try
{
processed = await Task.Run(() => _eventFinishedWaiter.WaitOne(timeSpan), token);
processed = await _eventFinishedWaiter.WaitAsync(timeSpan, token);
}
catch (TaskCanceledException)
@ -347,4 +348,4 @@ namespace SharedLibraryCore
return this;
}
}
}
}