Now personal stock window is loaded asyncronous

(not locking the initial window)
This commit is contained in:
2022-02-22 20:46:02 +01:00
parent d8f6ce4650
commit 95a9537af9
3 changed files with 81 additions and 2 deletions

View File

@ -145,6 +145,83 @@ namespace StockDal
} }
} }
public async Task LoadStockMarketListAsync(int persId)
{
StockMarketList = new Dictionary<string, DiTraderStockRow>();
DumpObjects = new List<DiTraderStockRow>();
var groupedStocks = persId == 0 ? _stockRepository.GetStocksGroupedAllPersons()
: _stockRepository.GetStocksGroupedPerPerson(persId);
//var tasks = new List<Task<List<DiTraderStockRow>>>();
var lastGroup = string.Empty;
var stockList = new List<string>();
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<DiTraderStockRow>(_scrapePage.SearchStockAndCollect(stk.Substring(0, 4))));
//tasks.Add( Task.Run(() => new List<DiTraderStockRow>(_scrapePage.SearchStockAndCollect(stk.Substring(0, 4)))));
saveStockData(await Task.Run(() => new List<DiTraderStockRow>(_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<DiTraderStockRow>(_scrapePage.SearchStockAndCollect(stk.Substring(0, 4))));
//tasks.Add(Task.Run(() => new List<DiTraderStockRow>(_scrapePage.SearchStockAndCollect(stk.Substring(0, 4)))));
saveStockData(await Task.Run(() => new List<DiTraderStockRow>(_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) public DiTraderStockRow LoadStockMarketStockData(string searchedStock)
{ {
var groupedStocks = _stockRepository.GetGroupedStock(searchedStock); var groupedStocks = _stockRepository.GetGroupedStock(searchedStock);

View File

@ -16,6 +16,7 @@ namespace StockDal.Interface
void LoadStockMarketList(int persId); void LoadStockMarketList(int persId);
//void LoadStockMarketList(int persId, bool viewBrowser); //void LoadStockMarketList(int persId, bool viewBrowser);
Task LoadStockMarketListAsync(int persId);
DiTraderStockRow LoadStockMarketStockData(string searchedStock); DiTraderStockRow LoadStockMarketStockData(string searchedStock);
} }
} }

View File

@ -140,7 +140,7 @@ namespace StockInfoCore
ReloadData(); ReloadData();
} }
private void btnValueView_Click(object sender, EventArgs e) private async void btnValueView_Click(object sender, EventArgs e)
{ {
//if(!GlobalStopwatch.IsRunning && GlobalStopwatch.EllapsedMillis>0) //if(!GlobalStopwatch.IsRunning && GlobalStopwatch.EllapsedMillis>0)
// GlobalStopwatch.Restart(); // GlobalStopwatch.Restart();
@ -155,7 +155,8 @@ namespace StockInfoCore
var person = _personRepository.GetPersonById(SelectedPersonId); var person = _personRepository.GetPersonById(SelectedPersonId);
Cursor.Current = Cursors.WaitCursor; Cursor.Current = Cursors.WaitCursor;
_stockMarketRepository.LoadStockMarketList(SelectedPersonId); await _stockMarketRepository.LoadStockMarketListAsync(SelectedPersonId);
_stockWindow.ConnectedPerson = person; _stockWindow.ConnectedPerson = person;
_stockWindow.Stocks = _stockMarketRepository.StockMarketList; _stockWindow.Stocks = _stockMarketRepository.StockMarketList;