public async Task <Exception> TryUpdateAccountInfo(UserInfo userInfo) { if (!ConnectedUsers.ContainsKey(userInfo.Id)) { return(new ValidationException(string.Empty)); } var response = await TryRunTask <string, AccountInfoResponse>(GetAccountInfo, OnDisposeCts.Token, userInfo.Login); if (response.IsSuccess) { ConnectedUsers[userInfo.Id].AccountInfo = response.Result; var responseBalances = response.Result.Balances; responseBalances.ForEach(x => x.UserInfo = ConnectedUsers[userInfo.Id]); lock (Balances) { responseBalances.ForEach(x => { var balanceInd = Balances.FindIndex(y => y.UserInfo.Id == x.UserInfo.Id && y.CurrencyType == x.CurrencyType); if (balanceInd >= 0) { Balances[balanceInd] = x; } else { Balances.Add(x); } }); } } else { return(response.Exception); } var historyResp = await TryRunTask <string, AccountHistoryResponse[]>(GetAccountHistory, OnDisposeCts.Token, userInfo.Login); if (historyResp.IsSuccess) { ConnectedUsers[userInfo.Id].AccountHistory = historyResp.Result; return(null); } return(historyResp.Exception); }