ACR加载和ZXing处理结果

问题描述

一个非常简单的 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/主线程上执行代码,而且还等待它的代码。这样你就可以同时拥有异步/等待逻辑和主线程执行。

你可以参考类似的案例https://stackoverflow.com/a/67483594/10768653

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...