internal async Task StopFarming() {
if (!NowFarming) {
return;
}
await FarmingSemaphore.WaitAsync().ConfigureAwait(false);
try {
if (!NowFarming) {
return;
}
Bot.ArchiLogger.LogGenericInfo("Sending signal to stop farming");
KeepFarming = false;
FarmResetEvent.Set();
Bot.ArchiLogger.LogGenericInfo("Waiting for reaction...");
for (byte i = 0; (i < 5) && NowFarming; i++) {
await Task.Delay(1000).ConfigureAwait(false);
}
if (NowFarming) {
Bot.ArchiLogger.LogGenericWarning("Timed out!");
NowFarming = false;
}
Bot.ArchiLogger.LogGenericInfo("Farming stopped!");
Bot.OnFarmingStopped();
} finally {
FarmingSemaphore.Release();
}
}