From 95a9537af9dfe832e433aa55245fe96dad41dbe9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Tue, 22 Feb 2022 20:46:02 +0100 Subject: [PATCH] Now personal stock window is loaded asyncronous (not locking the initial window) --- StockDAL/StockMarketRepository.cs | 77 ++++++++++++++++++++ StockDal.Interface/IStockMarketRepository.cs | 1 + StockInfoCore/frmInitial.cs | 5 +- 3 files changed, 81 insertions(+), 2 deletions(-) diff --git a/StockDAL/StockMarketRepository.cs b/StockDAL/StockMarketRepository.cs index 459f4ce..0aaf6ef 100644 --- a/StockDAL/StockMarketRepository.cs +++ b/StockDAL/StockMarketRepository.cs @@ -145,6 +145,83 @@ namespace StockDal } } + public async Task LoadStockMarketListAsync(int persId) + { + StockMarketList = new Dictionary(); + DumpObjects = new List(); + var groupedStocks = persId == 0 ? _stockRepository.GetStocksGroupedAllPersons() + : _stockRepository.GetStocksGroupedPerPerson(persId); + + //var tasks = new List>>(); + + var lastGroup = string.Empty; + var stockList = new List(); + foreach (var groupedStock in groupedStocks) + { + if (groupedStock.StockGroup != lastGroup) + { + if (lastGroup != string.Empty) + { + _testSettings.StockWishes = stockList.ToArray(); + if (lastGroup == "ZNotFound") + foreach (var stk in stockList) + { + //saveStockData(new List(_scrapePage.SearchStockAndCollect(stk.Substring(0, 4)))); + //tasks.Add( Task.Run(() => new List(_scrapePage.SearchStockAndCollect(stk.Substring(0, 4))))); + saveStockData(await Task.Run(() => new List(_scrapePage.SearchStockAndCollect(stk.Substring(0, 4))))); + } + else + { + //saveStockData(_scrapePage.GetMyStockStatus(lastGroup)); + //tasks.Add(Task.Run(() => _scrapePage.GetMyStockStatus(lastGroup))); + saveStockData(await Task.Run(() => _scrapePage.GetMyStockStatus(lastGroup))); + } + stockList.Clear(); + lastGroup = groupedStock.StockGroup; + } + else + { + lastGroup = groupedStock.StockGroup; + } + + stockList.Add(groupedStock.StockId); + } + else + { + stockList.Add(groupedStock.StockId); + } + } + + if (stockList.Count > 0) + { + _testSettings.StockWishes = stockList.ToArray(); + if (lastGroup == "ZNotFound") + foreach (var stk in stockList) + { + //saveStockData(new List(_scrapePage.SearchStockAndCollect(stk.Substring(0, 4)))); + //tasks.Add(Task.Run(() => new List(_scrapePage.SearchStockAndCollect(stk.Substring(0, 4))))); + saveStockData(await Task.Run(() => new List(_scrapePage.SearchStockAndCollect(stk.Substring(0, 4))))); + } + else + //saveStockData(_scrapePage.GetMyStockStatus(lastGroup)); + //tasks.Add(Task.Run(() => _scrapePage.GetMyStockStatus(lastGroup))); + saveStockData(await Task.Run(() => _scrapePage.GetMyStockStatus(lastGroup))); + stockList.Clear(); + } + + //var results = await Task.WhenAll(tasks); + //foreach(var result in results) + //{ + // saveStockData(result); + //} + + if (DumpObjects.Any()) + { + SaveLogging(); + } + } + + public DiTraderStockRow LoadStockMarketStockData(string searchedStock) { var groupedStocks = _stockRepository.GetGroupedStock(searchedStock); diff --git a/StockDal.Interface/IStockMarketRepository.cs b/StockDal.Interface/IStockMarketRepository.cs index 522115e..47ffba4 100644 --- a/StockDal.Interface/IStockMarketRepository.cs +++ b/StockDal.Interface/IStockMarketRepository.cs @@ -16,6 +16,7 @@ namespace StockDal.Interface void LoadStockMarketList(int persId); //void LoadStockMarketList(int persId, bool viewBrowser); + Task LoadStockMarketListAsync(int persId); DiTraderStockRow LoadStockMarketStockData(string searchedStock); } } diff --git a/StockInfoCore/frmInitial.cs b/StockInfoCore/frmInitial.cs index 56cbb20..c86cf91 100644 --- a/StockInfoCore/frmInitial.cs +++ b/StockInfoCore/frmInitial.cs @@ -140,7 +140,7 @@ namespace StockInfoCore ReloadData(); } - private void btnValueView_Click(object sender, EventArgs e) + private async void btnValueView_Click(object sender, EventArgs e) { //if(!GlobalStopwatch.IsRunning && GlobalStopwatch.EllapsedMillis>0) // GlobalStopwatch.Restart(); @@ -155,7 +155,8 @@ namespace StockInfoCore var person = _personRepository.GetPersonById(SelectedPersonId); Cursor.Current = Cursors.WaitCursor; - _stockMarketRepository.LoadStockMarketList(SelectedPersonId); + await _stockMarketRepository.LoadStockMarketListAsync(SelectedPersonId); + _stockWindow.ConnectedPerson = person; _stockWindow.Stocks = _stockMarketRepository.StockMarketList;