diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 1a2217fb9..fa1df1477 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -76,6 +76,7 @@ namespace ArchiSteamFarm { private readonly ConcurrentHashSet HandledGifts = new ConcurrentHashSet(); private readonly ConcurrentHashSet SteamFamilySharingIDs = new ConcurrentHashSet(); private readonly ConcurrentHashSet OwnedPackageIDs = new ConcurrentHashSet(); + private readonly SemaphoreSlim CallbackSemaphore = new SemaphoreSlim(1); private readonly SemaphoreSlim InitializationSemaphore = new SemaphoreSlim(1); private readonly SteamApps SteamApps; private readonly SteamClient SteamClient; @@ -352,6 +353,7 @@ namespace ArchiSteamFarm { CardsFarmer.Dispose(); HeartBeatTimer.Dispose(); HandledGifts.Dispose(); + CallbackSemaphore.Dispose(); InitializationSemaphore.Dispose(); SteamFamilySharingIDs.Dispose(); OwnedPackageIDs.Dispose(); @@ -1698,10 +1700,16 @@ namespace ArchiSteamFarm { private void HandleCallbacks() { TimeSpan timeSpan = TimeSpan.FromMilliseconds(CallbackSleep); while (KeepRunning || SteamClient.IsConnected) { + if (!CallbackSemaphore.Wait(0)) { + return; + } + try { CallbackManager.RunWaitCallbacks(timeSpan); } catch (Exception e) { Logging.LogGenericException(e, BotName); + } finally { + CallbackSemaphore.Release(); } } }