问题描述
在一个非常简单的 Xamarin android APP
中,我使用 ZXing
扫描条形码,然后处理结果。处理句柄结果需要几秒钟的时间,在此期间我想显示 ACR showLoading
,但当扫描仪/相机关闭时,活动指示器几乎立即隐藏。
如何在处理结果时保持显示加载打开?
清理代码:
async void onAddByScan(object sender,EventArgs e)
{
var options = new ZXing.Mobile.MobileBarcodeScanningOptions();
var scanner = new MobileBarcodeScanner();
ZXing.Result result = await scanner.Scan(options);
using (UserDialogs.Instance.Loading())
{
await HandleResultAsync(result);
}
}
async Task HandleResultAsync(ZXing.Result result)
{
//do something with the results
}
解决方法
您可以在 Xamarin.Essentials: MainThread 类中使用 InvokeOnMainThreadAsync 方法。此方法的想法不仅是在 UI/主线程上执行代码,而且还等待它的代码。这样你就可以同时拥有异步/等待逻辑和主线程执行。