올바르게 메모리 누수가 없도록 비트 맵을 처리하는 방법을 알아야합니다. 나는 BackgroundWorker에 비디오를 잡아와 같은의 PictureBox에 할당하고있다 :백그라운드 스레드에서 사용되는 비트 맵 처리
private void bwVideo_ReadCamera(object sender, DoWorkEventArgs e)
{
Bitmap temp = null;
while (true)
{
Image<Bgr, Byte> frame = logitec.QueryFrame();
if (temp != null)
temp.Dispose();
temp = frame.ToBitmap();
pictureBox2.Image = temp;
}
}
문제는 내가 아직이 코드의 "메모리 예외 부족"얻을 것입니다. BackgroundWorker ReportProgress를 사용하고 위 코드에서 dispose가 끝나기를 기다리면서 pictureBox2.Image 변수를 해제하려고했습니다. 사용자가 PictureBox 이미지에서 dispose를 호출하기 위해 gui와 동기화해야합니다. 또한 이미지와 비트 맵간에 데이터를 공유하는 Image 클래스의 "Bitmap"속성을 사용하려고했습니다.
내 질문에이 상황에서 내 이미지를 처분하는 적절한 방법은 무엇입니까?
메모리 부족 예외는 어디에서 발생합니까? – DiskJunky
프레임이 선언 된 위치는 어디입니까? 프레임 유형은 무엇입니까? 프레임을 처분해야합니까? – mbeckish
죄송합니다. 프레임 선언이 표시됩니다. 메모리 부족 예외가 프레임에 throw됩니다. ToBitmap(); – user912447