【发布时间】:2020-09-18 03:32:24
【问题描述】:
我试图通过添加 Async/Await 来改进我的桌面应用程序,这里是我的代码查询数据库
public async Task<List<Stocks>> StockListAsync()
{
List<Stocks> stocks = new List<Stocks>();
{
conn = await App_Code.DbConnection.InitializeConnectionAsync();
string cnt = "SELECT * FROM tblStock";
cmd = new SqlCommand(cnt, conn);
rd = cmd.ExecuteReader();
if (rd.HasRows == true)
{
while (await rd.ReadAsync())
{
var rm = new Stocks
{
ID = Convert.ToInt32(rd["ID"]),
Supplier = Convert.ToInt32(rd["Supplier"]),
StockCode = rd["StockCode"].ToString(),
StockName = rd["StockName"].ToString(),
Description = rd["Description"].ToString(),
UnitMeasure = rd["Measurement"].ToString(),
Quantity = Convert.ToInt32(rd["Quantity"]),
OrderQty = Convert.ToInt32(rd["OrderQty"]),
Cost = Convert.ToDouble(rd["Cost"]),
};
stocks.Add(rm);
}
}
return stocks;
}
//}
}
上面的代码是一个名为 Stocks 的单独类,然后是我想要显示结果的 windows 窗体我创建了一个这样的股票类实例 * readonly Stocks stock = new Stocks();* 而且我还有一个方法GetStock 下面是代码
void GetStocks()
{
var list = stock.StockListAsync();
var result = from g in list
select g;
GrdFood.Rows.Clear();
foreach (var item in result)
{
GrdFood.Rows.Add(GrdFood.RowCount + 1, item.Supplier, item.StockName,
item.Description, item.Quantity.ToString("N2"), item.OrderQty.ToString("N2"),
Convert.ToDouble(item.Cost).ToString("N2"), item.ID);
}
}
然后在FormLoad事件上我调用了GetStocks 问题是下面代码中的List报错了找不到查询的实现源类型 Task> StockList 选择未找到的模式
var list = stock.StockListAsync();
var result = from g in list
select g;
在我做异步任务之前一切正常,请问我该如何纠正这个实现谢谢。
【问题讨论】:
-
强烈要求退房async programming
标签: c# winforms asynchronous