public async Task MergeRatesAsync(ExchangeRates toMerge, CancellationToken cancellationToken) { using (await fLock.LockForWritingAsync(cancellationToken)) { var newRates = new ExchangeRates(fRates); foreach (var rate in toMerge) { newRates.Add(rate.Key, rate.Value); } fRates = newRates; } }