@page "/SpotClient" @using CryptoExchange.Net.SharedApis @using System.Diagnostics @inject IEnumerable restClients

ETH-BTC prices:

@foreach(var price in _prices.OrderBy(p => p.Key)) {
@price.Key: @price.Value
} @code{ private Dictionary _prices = new Dictionary(); protected override async Task OnInitializedAsync() { var symbol = new SharedSymbol(TradingMode.Spot, "ETH", "BTC"); var tasks = restClients.Select(x => x.GetSpotTickerAsync(new GetTickerRequest(symbol))); await foreach (var ticker in ParallelEnumerateAsync(tasks)) { if (ticker.Success) _prices.Add(ticker.Exchange, ticker.Data.LastPrice); else Debug.WriteLine($"{ticker.Exchange} failed: {ticker.Error}"); await InvokeAsync(StateHasChanged); } } private async IAsyncEnumerable ParallelEnumerateAsync(IEnumerable> tasks) { var remaining = new List>(tasks); while (remaining.Count != 0) { var task = await Task.WhenAny(remaining).ConfigureAwait(false); remaining.Remove(task); yield return task.Result; } } }