디버깅하기가 어렵다고 생각되는 조금 이상한 문제가 있습니다. 때때로 프로그램을 닫을 수 없으며 프로그램을 닫을 때 멈출 수 있습니다. 큰 프로그램을 만들었습니다. 비디오 이미지 인식, 작동합니다. 카메라를 닫으려고 특수 버튼을 만들었습니다. 이 버튼은 아래 함수를 호출하여 작동하며 실제로 작동합니다.프로그램이 닫히지 않고 aforge 카메라가 계속 실행되고 스레딩 문제가 발생합니다.
private void exitcamera()
{
FinalVideo.SignalToStop();
FinalVideo.WaitForStop();
FinalVideo = null;
}
통지서 원본 비디오 지금이
private void buttonStartCamera_Click(object sender, EventArgs e)
{
FinalVideo = new VideoCaptureDevice(VideoCaptureDevices[comboBox1.SelectedIndex].MonikerString);
FinalVideo.DesiredFrameSize = new System.Drawing.Size(640, 480);
FinalVideo.DesiredFrameRate = 90;
FinalVideo.NewFrame += new NewFrameEventHandler(FinalVideo_NewFrame);
FinalVideo.ProvideSnapshots = true; //snapshots
FinalVideo.Start();
}
내 문제 솔기처럼 시작되었다 (그리고 이것은 내가이 순간을 디버깅 cannt 때문에 추측입니다) 어떤 스레드가 계속 업데이트하고 싶은 활성화되어 있는지 것을 데이터가있는 기본 양식. 그러나 닫을 수 있기 때문에 그렇게 할 수 없습니다. 나는 그런 일이 벌어지고 생각은 그래서 난 주 응용 프로그램 형태로 프로그램이 종료 더 많은 문제를 가지고 장소에서 마지막 코드 그러나
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
// Thread.Sleep(1000); // not sure about these delays might help syncing threads
ExitCamera();
Thread.Sleep(1000);
}
에 썼다?
나는 subthreads 출구를 보내고 싶다. 그러나 나는 그들의 이름을 알고있다. (만약 그들이 이름을 가지고 있다면) 나는 그들을 나열하는 법을 모른다. 코드. 일부 DLL에서 코드가 없습니다.
하위 스레드를 나열한 다음 하나씩 종료하는 방법이 있습니다. 응용 프로그램을 종료하기 위해 uppercorner 오른쪽 십자가를 누르는 방법이 있습니까?
방금 동일한 상황이 발생하여 WaitForStop()이 호출 된 스레드에서 매우 중요하다고 생각됩니다. 이제는 모든 대기를 별도의 스레드에서 수행하며 완벽하게 작동합니다. –