0

在选择更改事件中,我正在访问我的一张表中的数据。但是会抛出“异常已被调用的目标抛出”。

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 运算符只能在异步 lamhda 表达式中使用。考虑使用 'async' 修饰符制作此 lamhda 表达式。”

我该如何解决这个问题?

4

2 回答 2

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 线程 (await query.ToListAsync() ) 访问 UI 组件 (cbCity.SelectedItem)

于 2012-10-22T18:00:36.907 回答
0

这个 foreach 是异步执行的,您正在从不同的线程访问您的 UI。将您的 foreach 包装在 Dispatcher.Invoke() 中。

像这样:

Dispatcher.CurrentDispatcher.Invoke( new Action( () => {... your foreach...}   );
于 2012-10-22T17:36:14.473 回答