如何在访问数据时修复“调用目标引发异常”?

时间:2012-10-22 17:26:09

标签: c# sqlite exception windows-8

在选择更改事件上,我正在从其中一个表中访问数据。但是抛出了“调用目标引发的异常”。

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表达式。”

我该如何解决这个问题?

2 个答案:

答案 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...}   );