mirror of
https://github.com/JustArchiNET/ArchiSteamFarm.git
synced 2026-01-16 08:25:28 +00:00
Only for loops need a copy
I knew something is fishy here, https://blogs.msdn.microsoft.com/ericlippert/2009/11/12/closing-over-the-loop-variable-considered-harmful/
This commit is contained in:
@@ -115,8 +115,7 @@ namespace ArchiSteamFarm {
|
||||
internal static async Task ShutdownAllBots() {
|
||||
List<Task> tasks = new List<Task>();
|
||||
foreach (Bot bot in Bots.Values) {
|
||||
Bot currentBot = bot;
|
||||
tasks.Add(Task.Run(async () => await currentBot.Shutdown().ConfigureAwait(false)));
|
||||
tasks.Add(Task.Run(async () => await bot.Shutdown().ConfigureAwait(false)));
|
||||
}
|
||||
await Task.WhenAll(tasks).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -272,7 +272,7 @@ namespace ArchiSteamFarm {
|
||||
if (page == 1) {
|
||||
CheckPage(htmlDocument); // Because we fetched page number 1 already
|
||||
} else {
|
||||
byte currentPage = page;
|
||||
byte currentPage = page; // We need a copy of variable being passed when in for loops
|
||||
checkPagesTasks.Add(Task.Run(async () => await CheckPage(currentPage).ConfigureAwait(false)));
|
||||
}
|
||||
}
|
||||
@@ -287,8 +287,7 @@ namespace ArchiSteamFarm {
|
||||
List<Task> checkHoursTasks = new List<Task>();
|
||||
Logging.LogGenericInfo(Bot.BotName, "Checking hours...");
|
||||
foreach (uint appID in GamesToFarm.Keys) {
|
||||
uint currentAppID = appID;
|
||||
checkHoursTasks.Add(Task.Run(async () => await CheckHours(currentAppID).ConfigureAwait(false)));
|
||||
checkHoursTasks.Add(Task.Run(async () => await CheckHours(appID).ConfigureAwait(false)));
|
||||
}
|
||||
await Task.WhenAll(checkHoursTasks).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
@@ -60,8 +60,7 @@ namespace ArchiSteamFarm {
|
||||
List<Task> tasks = new List<Task>();
|
||||
foreach (SteamTradeOffer tradeOffer in tradeOffers) {
|
||||
if (tradeOffer.trade_offer_state == SteamTradeOffer.ETradeOfferState.Active) {
|
||||
SteamTradeOffer currentTradeOffer = tradeOffer;
|
||||
tasks.Add(Task.Run(async () => await ParseTrade(currentTradeOffer).ConfigureAwait(false)));
|
||||
tasks.Add(Task.Run(async () => await ParseTrade(tradeOffer).ConfigureAwait(false)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user