private async void GetBalances(object sender, EventArgs e) { var addressList = CompanyAddresses.Select(q => q.Address).ToList(); addressList.AddRange(CustomerAddresses.Select(q => q.Address)); var usdtBalanceDict = await AddressManager.BatchGetUSDTBalanceViaNode(addressList); var balanceDict = new Dictionary <string, Money>(); await Task.Run(async() => { balanceDict = await AddressManager.BatchGetBTCBalanceViaNode(addressList); }); if (balanceDict.Count <= 0 && usdtBalanceDict.Count <= 0) { return; } foreach (var addr in CompanyAddresses) { if (balanceDict.Count > 0) { addr.Balance = balanceDict[addr.Address]; } if (usdtBalanceDict.Count > 0) { addr.USDTBalance = usdtBalanceDict[addr.Address]; } } foreach (var addr in CustomerAddresses) { if (balanceDict.Count > 0) { addr.Balance = balanceDict[addr.Address]; } if (usdtBalanceDict.Count > 0) { addr.USDTBalance = usdtBalanceDict[addr.Address]; } } }