如何修复访问数据时"exception has been thrown by the target of an invocation"?



在选择更改事件时,我正在从我的一个表中访问数据。但是"例外是由调用的目标抛出"。

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();
}

添加DECROSE语句后,我将以下错误作为"等待运算符只能在异步LAMHDA表达式中使用。考虑使用'async'修饰符制作此lamhda表达式。"

如何解决此问题?

尝试以这样的方式重写代码:

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())

此foreach是异步执行的,您正在从另一个线程访问UI。将您的foreach包裹在dispatcher.invoke()。

喜欢:

Dispatcher.CurrentDispatcher.Invoke( new Action( () => {... your foreach...}   );

相关内容

最新更新