|
CriticalSection은 사용해봤는데 같은 결과가 나왔었습니다.
하지만 태윤님께서 말씀하신 것과 같이 Synchronize 사용하니까 되네요.
근데 CriticalSection도 같은 결과를 얻는 것이 아니었나요?
뭐가 다른건지 공부해야겠습니다.
선입견 때문에 Synchronize로 테스트 해볼 생각도 하지 않았다는 것이 부끄럽네요.
감사합니다~!
방태윤 님이 쓰신 글 :
: 이게 원인인지는 모르지만
:
: 쓰레드에서 화면 출력이랑 관계될땐 Synchronize 를 써야 하는걸로 알고 있는데요...
:
: 해 보셨는지요?
:
: 수고하세요,
:
:
: 김정현 님이 쓰신 글 :
: : 쓰레드의 Execute() 함수에서
: :
: : Graphics::TBitmap *bmpOverlay = new Graphics::TBitmap();
: : bmp->SetSize(640,480);
: : while(!Terminated) {
: : Sleep(25);
: : myControl->DrawLiveCam(bmp);
: : }
: : bmp->Free();
: :
: : 이렇게 DrawImage()에서 buffer에 있는 image를 bmp->canvas에 뿌려주고,
: : bmp->canvas에 선, 텍스트 등 overlay image를 그려주고,
: : myControl의 canvas에 draw() 해줍니다.
: :
: : 그런데 이 컴포넌트를 폼에 올려놓고 사용하면 영상이 잘 나오다가
: : 마우스가 폼 위에 올라오기만 하면 멈춰버립니다.
: : bmp를 draw 함수 내에서 생성/삭제를 하면 영상이 멈추지는 않지만
: : 마우스가 폼 위에서 움직일 때마다 bitmap 관련하여 메모리 누수 현상이 생깁니다.
: :
: : 그냥 buffer에 있는 영상만을 뿌려주는 것은 문제가 되지 않는데
: : bitmap을 사용하면서 생기는 문제로 보입니다.
: :
: : 어떻게 해결할까요...ㅠㅠ
|