|
사쿠라 님이 쓰신 글 :
: 안녕하십니까?
: 궁금한게 있어서... 고수님들께
: 조언을 구하고자 합니다..
:
:
: VC++에 보면...
: Thread의 종류중 Work Thread와 UI Thread로 나뉘어 있더군요...
:
: Work Thread의 경우... C++Builder의 Thread와 별반 다를듯 없는듯 하구요... (내가 보기엔...)
: UI Thread가 문제 인데...
: 여기서 UI Thread는 Thread가 돌고 있는동안 이Thread를 생성/실행시킨 Window의 동작을 보장하여 준다더군요...
:
: 얼마전...
: C++ Builder에서 Thread를 사용하여 DB를 조회 하는
: 프로그램을 했는데....
: DB조회가 오래 걸리면... 그 Thread를 생성하고 실행시킨 Window가
: DB조회가 끝날때 까지 먹통 상태가 되는 일이 발생하더군요...... -_-;;
: (물론... Thread내에서 VCL Component에 접근할때는 Synchronize를 사용했구요.. )
:
: 이런 문제 막을라고 Thread썼는데.. -_-;;
: 효과가 별로 없더라구요....
:
:
: 혹시... UI Thread형태로 동작 하도록 TThread를 지정해주는게 있거나..
: 뭐 그런것 들이 있다면...
:
: 알려주신다면 참으로 감사하겠습니다!!!!!
:
: 그럼... 좋은 하루되시길!!!
BCB에는 UI 스레드 WORK 스레드 따로 나뉘어 있지 않습니다. 그게 왜 나뉘어야 하는지 잘 모르겠군요. (VC++모름^^)
멈추는 이유는 어딘가에서 데드락이 걸린 모양이네요 ^^;;;
데드락이 아니라면 화면을 다시 그리라는 메시지인 WM_PAINT를 처리하지 않아서 먹통이 된 것처럼 보였을수도 있습니다.
무한 루프를 주실 때는 메시지가 처리될 수 있도록 반드시 Application->ProcessMessages(); 를 때려주는 센/스/를 보여야겠죠.
아닐 경우에는 다시 질문 올려주세요 ㅠㅠ
20000
|