ACR loading and ZXing handle result

130 Views Asked by At

In a very simple Xamarin android APP I scan a barcode with ZXing and then handle the result. The handle results takes a few seconds to process and during I want to show an ACR showLoading, but the activity indicator hides almost instantly when the scanner/camera is closed.

How can I keep the show loading open while it is handling the result?

Cleaned code:

    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
    }
1

There are 1 best solutions below

0
On

You could use InvokeOnMainThreadAsync method in the Xamarin.Essentials: MainThread class. The idea of this method is to not only execute a code on the UI/main thread, but to also to await it's code. This way you can have both async/await logic and main thread execution.

You could refer to the similar case https://stackoverflow.com/a/67483594/10768653.