/// <summary> /// Обновляет все картриджи баланса ОСП. /// </summary> /// <param name="ospBalance">Новый список баланса</param> public void UpdateBalances(IEnumerable <BalanceDTO> ospBalance) { // Если список не пустой обновить состояние каждого объекта. if (ospBalance.Any()) { foreach (var balance in ospBalance) { UpdateBalance(balance); } BalanceUpdated?.Invoke(); } // Иначе очистить текущий список. else { Balance.Clear(); } }
public void ReloadBalances() { Balance = 0; UnconfirmedIncome = 0; UnconfirmedOutcome = 0; var addresses = DataRepository .GetUnspentTezosTokenAddressesAsync(TokenType, _tokenContract, _tokenId) .WaitForResult(); foreach (var address in addresses) { Balance += address.Balance; UnconfirmedIncome += address.UnconfirmedIncome; UnconfirmedOutcome += address.UnconfirmedOutcome; } BalanceUpdated?.Invoke(this, new CurrencyEventArgs(Currency)); }
/// <summary> /// Update worker /// </summary> /// <param name="data"></param> private void _worker(object data) { while (true) { List <WalletDTO> processWallets; lock (locker) { processWallets = new List <WalletDTO>(_wallets); } foreach (var wallet in processWallets) { try { var json = _httpClient.GetStringAsync(string.Format("http://monitorapi.ccore.online/api/getbalance?seed={0}&address={1}", wallet.Seed, wallet.Address)).Result; var balance = JsonConvert.DeserializeObject <BalanceWalletDTO>(json); balance.LastUpdated = DateTimeOffset.UtcNow.ToUnixTimeSeconds(); BalanceUpdated?.Invoke(balance, wallet.Address, wallet.Seed); } catch { var balance = new BalanceWalletDTO() { LastUpdated = DateTimeOffset.UtcNow.ToUnixTimeSeconds(), Error = true }; BalanceUpdated?.Invoke(balance, wallet.Address, wallet.Seed); //log exception } } lock (locker) { _sleep = true; while (_sleep) { Monitor.Wait(locker); _sleep = false; } } } }
protected void RaiseBalanceUpdated(CurrencyEventArgs eventArgs) { BalanceUpdated?.Invoke(this, eventArgs); }