我正在尝试清除异步编程的概念。我在单击句柄上有一个按钮,我正在从数据库中获取产品列表,然后调用异步方法以从另一个来源获取其他产品属性。一旦我拥有产品的其他属性,就在调用另一个方法来更新数据库。我面临的问题是当我单击按钮时,UI被阻止。整个操作完成后,UI就会响应。我想要实现的是,当用户单击按钮时,我希望UI保持响应状态。下面是我的代码:
按钮单击
private async void button2_Click(object sender, EventArgs e)
{
List<string> productList = ScentOmsRepository.scentOmsRepository.getProductNoHouseBrand();
List<Task> listOfTasks = new List<Task>();
foreach (string stkCode in productList)
{
listOfTasks.Add(ExchequerManager.Instance.updateBrandHouseAsync2(stkCode));
}
await Task.WhenAll(listOfTasks);
获取额外产品属性的方法
public async Task updateBrandHouseAsync(string product)
{
Enterprise01.IStock iStock = _Toolkit.Stock;
iStock.Index = TStockIndex.stIdxCode;
long result = iStock.GetGreaterThanOrEqual(product);
await ScentOmsRepository.scentOmsRepository.updateTStockBrandHouse(iStock.stUserField2, iStock.stUserField1, product);
}
数据库更新
internal async Task updateTStockBrandHouse(string brand, string hosue, string stkCode)
{
TStockFeed tStk = (from s in scentContext.TStockFeeds
where s.StockCode == stkCode
select s).FirstOrDefault();
tStk.Brand = brand;
tStk.House = hosue;
await scentContext.SaveChangesAsync();
任何想法我在这里做错了。
谢谢