在选择更改事件上,我正在从其中一个表中访问数据。但是抛出了“调用目标引发的异常”。
var query = conn.Table<auto_fares>().Where(x => x.city == cbCity.SelectedItem);
var result = await query.ToListAsync();
foreach (var item in result)
{
txtDistance.Text = item.min_km.ToString();
lblDayFare.Text = item.min_fare.ToString();
lblNightFare.Text = item.night_charges.ToString();
}
添加Dispose语句后,我收到以下错误: “await运算符只能在async lamhda表达式中使用。请考虑使用'async'修饰符创建此lamhda表达式。”
我该如何解决这个问题?
答案 0 :(得分:1)
尝试重写这样的代码:
var selectedCity = cbCity.SelectedItem;
var query = conn.Table<auto_fares>().Where(x => x.city == selectedCity);
var result = await query.ToListAsync();
foreach (var item in result)
{
txtDistance.Text = item.min_km.ToString();
lblDayFare.Text = item.min_fare.ToString();
lblNightFare.Text = item.night_charges.ToString();
}
您正在尝试从非UI线程访问UI组件(cbCity.SelectedItem)(等待query.ToListAsync())
答案 1 :(得分:0)
这个foreach是异步执行的,您正在从另一个线程访问您的UI。将您的foreach包装在Dispatcher.Invoke()中。
像这样:
Dispatcher.CurrentDispatcher.Invoke( new Action( () => {... your foreach...} );