簡體   English   中英

訪問數據時,如何解決“調用目標拋出了異常”?

[英]How can I fix “exception has been thrown by the target of an invocation” while accessing data?

在選擇更改事件中,我正在從我的一個表中訪問數據。 但是將引發“異常已由調用的目標引發”。

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表達式。

我該如何解決?

嘗試像這樣重新編寫代碼:

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線程(等待query.ToListAsync())訪問UI組件(cbCity.SelectedItem)。

此foreach是異步執行的,您正在從其他線程訪問UI。 將您的foreach包裝在Dispatcher.Invoke()中。

像這樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM