private void UpdateNextCachedExchangeRate(UpdateCachedExchangeRatesState updateCachedExchangeRatesState) { var currenciesEnumerator = updateCachedExchangeRatesState.CurrenciesEnumerator; if (!currenciesEnumerator.MoveNext()) { currenciesEnumerator.Dispose(); updateCachedExchangeRatesState.Callback(new CachedExchangeRatesUpdateResult(updateCachedExchangeRatesState.UserState)); } else { var currency = currenciesEnumerator.Current; ExchangeCurrency(1, BaseCurrency, currency, false, UpdateCachedExchangeRate, updateCachedExchangeRatesState); } }