gpt4 book ai didi

c# - 照片相机 API : how to properly dispose it?

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:00 25 4
gpt4 key购买 nike

我正在使用 PhotoCamera API 构建二维码扫描页面(使用 ZXing)。但是,此页面只是应用程序的一小部分,因此不会始终显示。因此,应用程序在此页面和一些其他具有公共(public)控件的页面之间导航。

问题是有时,在扫描之后,整个应用程序会无缘无故地减慢到 30fps 而不是 60fps。我怀疑相机仍在后台运行,帧同步将应用程序锁定为 30fps,这是我的问题:如何正确处理使用 PhotoCamera API 的页面?

我的 XAML:

<Grid Background="Black">
<ProgressBar x:Name="PBar" IsIndeterminate="True" VerticalAlignment="Center" />

<Rectangle x:Name="ScanRect">
<Rectangle.Fill>
<VideoBrush x:Name="ScanVideoBrush" />
</Rectangle.Fill>
</Rectangle>
</Grid>

我的 C# 停止扫描过程:

    private void StopScan() {
if (analysisTimer != null) {
analysisTimer.Stop();
analysisTimer = null;
}

if (focusTimer != null) {
focusTimer.Stop();
focusTimer = null;
}

if (camera != null) {
camera.Dispose();
camera.Initialized -= OnCameraInitialized;
camera = null;
}

// Following two lines are a try to dispose stuff
// as much as possible, but the app still lags
// sometimes after a scan...

ScanVideoBrush.SetSource(new MediaElement());
ScanRect.Fill = new SolidColorBrush(Colors.Black);
}

注意:我正在 Lumia 920 上测试该应用。

最佳答案

调用 cam.Dispose(); 应该释放 Camera 对象使用的图像源流和释放资源,这样没问题。

您确定要释放内存,即取消订阅 PhotoCamera 类事件吗?

什么时候调用您的 StopScan 方法?一个好的做法是在 PhoneApplicationPageOnNavigatingFrom 中调用它。

这是来自 MSDN 的配置 PhotoCamera 的代码示例:

protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
{
if (cam != null)
{
// Dispose camera to minimize power consumption and to expedite shutdown.
cam.Dispose();

// Release memory, ensure garbage collection.
cam.Initialized -= cam_Initialized;
cam.CaptureCompleted -= cam_CaptureCompleted;
cam.CaptureImageAvailable -= cam_CaptureImageAvailable;
cam.CaptureThumbnailAvailable -= cam_CaptureThumbnailAvailable;
cam.AutoFocusCompleted -= cam_AutoFocusCompleted;
CameraButtons.ShutterKeyHalfPressed -= OnButtonHalfPress;
CameraButtons.ShutterKeyPressed -= OnButtonFullPress;
CameraButtons.ShutterKeyReleased -= OnButtonRelease;
}
}

Source

关于c# - 照片相机 API : how to properly dispose it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com