C#으로 작성된 Windows Mobile 6.1 응용 프로그램에서 작업하고 있습니다. 나는 최근에 사진을 찍을 수있는 능력을 추가했다. 이 장치는 Intermec CN50입니다. 이 코드는 앱을 열고 사진을 찍는 비트로 직접 이동하면 올바르게 작동합니다. 그러나 몇 가지 다른 화면을 살펴본 후 사진 비트를 열면 "알 수없는 오류가 발생했습니다"라는 매우 유용한 메시지와 함께 실패합니다. 내가 볼 수있는 예외에는 다른 유용한 정보는 없습니다. 여기 "알 수없는 오류가 발생했습니다"CameraCaptureDialog가 실패합니다.
cameraResult = cameraDialog.ShowDialog();
는 스택 추적의 : 코드는이 라인에 실패 여기
at Microsoft.WindowsMobile.Forms.CameraCaptureDialog.LaunchCameraCaptureDialog(IntPtr ptrStruct)
at Microsoft.WindowsMobile.Forms.CameraCaptureDialog.ShowDialog()
at MicronetMobileUi.Controls.Camera.ShowDialog(Form owner, String& fileName)
at MicronetMobileUi.FieldService.JobImagesForm.LoadCameraScreen()
at MicronetMobileUi.FieldService.JobImagesForm.footerToolbar_ItemEntered(Object sender, EventArgs e)
at Resco.Controls.CommonControls.ToolbarControl.OnItemEntered()
at Resco.Controls.CommonControls.ToolbarControl.MouseClickUp(MouseEventArgs e)
at Resco.Controls.CommonControls.ToolbarControl.OnMouseUp(MouseEventArgs e)
at System.Windows.Forms.Control.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.ContainerControl.WnProc(WM wm, Int32 wParam, Int32 lParam)
at System.Windows.Forms.Control._InternalWnProc(WM wm, Int32 wParam, Int32 lParam)
at Microsoft.AGL.Forms.EVL.EnterMainLoop(IntPtr hwnMain)
at System.Windows.Forms.Application.Run(Form fm)
at MicronetMobileUi.ApplicationManager.StartApp()
at MicronetMobileUi.Program.Main()
코드입니다 :이 메모리가 부족합니다 함께 할 수있는 뭔가 것 같다
var path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
var fileName = "temp.jpg";
var pathAndFileName = Path.Combine(path, fileName);
var cameraDialog = new CameraCaptureDialog();
cameraDialog.Owner = this;
cameraDialog.InitialDirectory = path;
cameraDialog.DefaultFileName = fileName;
cameraDialog.Mode = CameraCaptureMode.Still;
cameraDialog.StillQuality = CameraCaptureStillQuality.Low;
cameraDialog.VideoTimeLimit = new TimeSpan(0, 0, 0);
cameraDialog.VideoTypes = CameraCaptureVideoTypes.Messaging;
cameraDialog.Resolution = new Size(640, 480);
// open camera dialog to take a photo
DialogResult cameraResult;
try
{
cameraResult = cameraDialog.ShowDialog();
}
catch (Exception ex)
{
MessageBox.Show("Grrrr!!");
}
finally
{
cameraDialog.Dispose();
cameraDialog = null;
}
if (cameraResult != DialogResult.OK)
return; // no photo was taken
// save photo using this value: pathAndFileName ...
하지만, 나는 정말로 모른다. 지금까지 시도 :
1) 앱이 처음 시작될 때 CameraCaptureDialog를 설치하면 메모리가 확보 될 수 있습니다.
2) CameraCaptureDialog를 설치하고 앱을 처음 시작할 때 ShowDialog()를 호출합니다.
3) CameraCaptureDialog를 인스턴스화하기 전에 로컬 SQL CE 데이터베이스에 대한 연결을 끊습니다 (포럼에서 제안 되었음).
4) 인스턴스를 생성하기 전에 GC.Collect()를 실행하면 (예 : 일반적으로 좋은 생각이 아닙니다.)
5) (240)
아무것도에 의해 단지 320 cameraDialog.Resolution 감소 작동합니다. 나는이 애플 리케이션에이 기능을 추가하는 데 시간을 보냈다. Windows Mobile은 심각하게 짜증나게 할 수 있습니다. 도움!!
당신은 이것에 대한 해결책을 찾았습니까? 비슷한 문제가있어서 개발자들이 정신 나간 ... –