카메라 미리보기를 위해 Directshow.NET을 사용하여 C# 응용 프로그램을 개발했습니다. 모든 OS는 거의 모든 OS에서 잘 돌아가고 있지만 일부 Windows OS 10 머신에서는 모든 예외가 OS 10이 아니며 일부만 실행됩니다. Attempted to divide by zero.
의 hr = vmr9Control.RepaintVideo(hControl.Handle, gHDC);
Paint
이벤트가 Control
인 예외로 인해 미리보기가 실패합니다.IVMRWindowlessControl.RepaintVideo가 0으로 나누려고 시도 함
나는이 예외의 원인을 찾기 위해 많은 조사를했는데 심지어 기계 중 하나를 포맷했지만 문제는 여전히 존재합니다. 또한 관찰 당이 예외는 미리보기의 첫 번째 시도에서 오지 않습니다. 미리보기의미리보기를 5-6 반복하면이 예외가 발생합니다.
private void SetupGraph(DsDevice dev, Control hControl)
{
...
vmr9Control = (IVMRWindowlessControl)vmr9preview;
vmr9Control.SetVideoClippingWindow(hControl.Handle);
vmr9Control.SetAspectRatioMode(VMRAspectRatioMode.None);
hControl.Paint += new PaintEventHandler(hControl_Paint);
...
}
[System.Security.Permissions.SecurityPermission(
System.Security.Permissions.SecurityAction.LinkDemand, Flags =
System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]
void hControl_Paint(object sender, PaintEventArgs e)
{
if (isPreviewstarted && vmr9Control != null)
{
int hr;
IntPtr gHDC = e.Graphics.GetHdc();
hr = vmr9Control.RepaintVideo(hControl.Handle, gHDC);
DsError.ThrowExceptionForHR(hr);
e.Graphics.ReleaseHdc(gHDC);
}
}