ZXing 可以停止或处置以便我可以再次使用它吗?

Zar*_*arp 4 dispose zxing xamarin

我将 ZXing.Net.Mobile 用于这样的表单

                    var scanPage = new ZXingScannerPage();

                    scanPage.OnScanResult += (result) => {
                        // Stop scanning
                        scanPage.IsScanning = false;
                        // Pop the page and show the result
                        Device.BeginInvokeOnMainThread(async () => {
                          //  await Navigation.PopAsync();
                            await Navigation.PushModalAsync(new Pages.DataGridPage(PladsId));

                        });
                    };
Run Code Online (Sandbox Code Playgroud)

来自https://components.xamarin.com/gettingstarted/zxing.net.mobile.forms

但是在我扫描完 carmera 冻结后再次尝试时,我曾尝试处理/停止扫描仪但没有成功

可以停止或处理 ZXing 以便我可以再次使用它吗?

我正在使用 Visual Studio 2015 社区、xamarin.Forms 2.3.3.168、Syncfusion 14.4.0.15 和 ZXing.Net.Mobile 2.1.47。在 Android 版本 6.0.1 并使用 API 23 的 sony xperia z3 上运行它

任何帮助深表感谢

小智 8

找到了解决方案......

仅使用 IsScanning=true 一次...在 ScannerView 构造函数或页面的 OnAppearing 中..

_zxing = new ZXingScannerView
    {
        VerticalOptions = LayoutOptions.Center,
        HorizontalOptions = LayoutOptions.Center,
        HeightRequest = 250,
        WidthRequest = 250,
        IsAnalyzing = true,
        IsScanning = true,

    };
Run Code Online (Sandbox Code Playgroud)

不要在 OnDisappearing 中写任何东西...

protected override void OnDisappearing()
{
   // _zxing.IsScanning = false;
    base.OnDisappearing();

}
Run Code Online (Sandbox Code Playgroud)

一旦扫描完成,IsAnalysing 将被设置为 false,并且应在 OnAppearing 中设置为 true...

_zxing.OnScanResult += (result) =>       
Device.BeginInvokeOnMainThread(async () =>
{
     if (!string.IsNullOrWhiteSpace(result.Text))
     {
         _zxing.IsAnalyzing = false;
         await OnGettingResult(result.Text);
     }
});

protected override void OnAppearing()
{
    base.OnAppearing();
    _zxing.IsAnalyzing = true;

   //Not required if already set while intialization
   //_zxing.IsScanning = true;

}
Run Code Online (Sandbox Code Playgroud)