コード例 #1
0
        private async void OnElapsed(object state)
        {
            try
            {
                var context = (SynchronizationContext)state;
                Dictionary <string, Task <Stock> > symbolPriceTaskMapping = new Dictionary <string, Task <Stock> >();

                foreach (var stock in WatchList)
                {
                    // symbolPriceTaskMapping[stock.Symbol] = stockService.GetLivePriceAsync(stock.Symbol);
                }

                await Task.WhenAll(symbolPriceTaskMapping.Select(x => x.Value));

                SynchronizationContext.SetSynchronizationContext(context);

                WatchList = new BindingList <LiveStockData>(
                    WatchList.Select(
                        x =>
                {
                    if (symbolPriceTaskMapping.ContainsKey(x.Symbol))
                    {
                        x.Price = new Random().NextDouble();
                        // x.Price = symbolPriceTaskMapping[x.Symbol].Result.Price;
                        x.IsPositiveChange = x.Price > x.PreviousClose;
                        x.PercentageChange = Math.Round(((x.Price - x.PreviousClose) * 100 / x.PreviousClose), 2).ToString() + "%";
                    }
                    return(x);
                })
                    .ToList());
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }