C# 关闭预览窗口时禁用条形码扫描仪

C# 关闭预览窗口时禁用条形码扫描仪,c#,uwp,barcode-scanner,C#,Uwp,Barcode Scanner,当我关闭我的条形码扫描仪的预览窗口时,网络摄像头将保持活动状态,我想防止这种情况发生,因为看到摄像头仍然打开,并且即使我关闭预览,你仍然可以扫描一些条形码,这有点奇怪 当我关闭预览窗口时,我不知道如何禁用BarcodeScanner 这是我的“条形码扫描仪”代码: 专用异步任务ClaimScanner() { bool res=假; 字符串选择器=条形码扫描仪。GetDeviceSelector(); DeviceInformation Collection deviceCollection=W

当我关闭我的
条形码扫描仪的预览窗口时,网络摄像头将保持活动状态,我想防止这种情况发生,因为看到摄像头仍然打开,并且即使我关闭预览,你仍然可以扫描一些条形码,这有点奇怪

当我关闭预览窗口时,我不知道如何禁用
BarcodeScanner

这是我的“条形码扫描仪”代码:

专用异步任务ClaimScanner()
{
bool res=假;
字符串选择器=条形码扫描仪。GetDeviceSelector();
DeviceInformation Collection deviceCollection=Wait DeviceInformation.FindAllAsync(选择器);
如果(扫描器==null)
scanner=等待条形码scanner.FromIdAsync(deviceCollection[0].Id);
如果(扫描器!=null)
{
if(claimdbarcodescanner==null)
claimedBarcodeScanner=等待扫描程序。ClaimScannerSync();
if(claimdbarcodescanner!=null)
{
claimedBarcodeScanner.DataReceived+=claimedBarcodeScanner\u DataReceivedAsync;
claimedBarcodeScanner.ReleaseDeviceRequested+=claimedBarcodeScanner\u ReleaseDeviceRequested;
claimedBarcodeScanner.IsDecodeDataEnabled=true;
claimedBarcodeScanner.IsDisabledOnDataReceived=true;
等待claimedBarcodeScanner.EnableAsync();
res=真;
Debug.WriteLine(“条形码扫描仪”);
}
}
反垃圾邮件=假;
返回res;
}
公共异步void ScanBarcodeAsync()
{
if(claimdbarcodescanner==null&&!反垃圾邮件)
{
反垃圾邮件=真;
等待索赔扫描程序();
}
if(claimdbarcodescanner!=null)
{
wait claimedBarcodeScanner.ShowVideoPreviewAsync();
wait claimedBarcodeScanner.StartSoftwareTriggerAsync();
claimedBarcodeScanner=null;
}
}
专用异步无效ClaimedBarcodeScanner\u DataReceivedAsync(ClaimedBarcodeScanner发送方,条形码扫描方DataReceivedEventArgs参数)
{
等待Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,()=>
{
如果(currentDataContext!=null&¤tDataContext可扫描)
{
WriteLine(CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8,args.Report.Scandatabel));
可扫描obj=(可扫描)currentDataContext;
obj.NumSerie=CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8,args.Report.ScandaLabel);
}
}
);
}
无效ClaimedBarcodeScanner\u请求的释放设备(对象发送方,ClaimedBarcodeScanner e)
{
//始终保留设备
e、 保留不变();
}
编辑:我使用了Digimarc提供的Microsoft指定的库:

关闭预览窗口时禁用条形码扫描仪

ClaimedBarcodeScanner
具有
StopSoftwareTriggerAsync
方法,如果要在预览窗口关闭时禁用条形码扫描仪,只需在
HideVideoPreview
之后调用该方法即可

private async void HidePreviewButton_Click(object sender, RoutedEventArgs e)
{
    claimedScanner?.HideVideoPreview();
    await claimedScanner?.StopSoftwareTriggerAsync();   
}

你能提到你用哪个图书馆来读条形码吗?我编辑了我的post@Reaperino,以下答案有效吗?可以,但我使用的是默认预览窗口而不是自定义预览,因此我想知道在关闭该窗口时是否可以获取事件。上面的代码是默认预览窗口,ClaimedBarcodeScanner类不提供预览关闭时触发的事件。哦,我误解了您的第一个答案,但现在我明白了。我会给你一些消息。