임프님의 답변을 참조한다면, Synchronize()에서 호출된 함수내에서의 Application->ProcessMessage()는 어차피 메인 쓰레드이므로 문제가 발생할 여지가 없다고 봅니다.
즉 쓰레드가 아닌 메인 루틴의 Application->ProcessMessage()와 동일하겠지요.
그럼..
최범호 님이 쓰신 글 :
: 궁금한 점이 있이서 이렇게 답글을 올립니다.
:
: smleelms 님이 Thread 의 Execute 함수 안에서는 폼을 제어할때 Synchronize() 를 사용해야 한다고
:
: 하셨습니다. 그럼 Application->ProcessMessage() 는 어떤가요?
:
: Application->ProcessMessage() 를 Synchronize() 안에서 사용한다면 아무런 문제가 발생하지 않나요?
:
: 아니면 Application->ProcessMessage() 는 VCL 의 Thread 안에서는 사용하면 안되는 건가요?
:
:
:
: smleelms 님이 쓰신 글 :
: : 참고해 보시기 바랍니다.
: :
: :
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=26516
: :
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=28252
: :
: : 아마도 쓰레드내에서 폼을 건드리시기 때문일겁니다.
: : 저도 이걸 모를때는 한참 애먹었었는데... InsertItem 같은 것을 상관이 없지만요.
: :
: : 결론은 폼을 건드리실때는 Synchronize() 함수를 사용하셔서 메인 쓰레드로 돌려야 된다는겁니다.
: :
: : 그럼, 좋은결과 있으시길 바랍니다.
: :
: : 하늘마루 님이 쓰신 글 :
: : : 안녕하세요.
: : : cmsMSDS라는 DLL이 있습니다. 이 DLL에서는 메인 폼에 있는 ListView의 핸들을 얻어와서
: : : 서브클래싱하여 특정 필드에 체크버튼을 만드는 것을 만들었습니다.
: : : 그런데, 체크버튼을 안만들고 InsertItem 등을 하면 잘 나옵니다만, 체크버튼을 만들게 시키면, 먹통이 되어
: : : 버리네요. 체크버튼이 안보이는 것은 당연지사입니다.
: : :
: : : 참... cmsMSDS.DLL은 Worker Thread로 동작하도록 만들고, 소켓으로 들어오는 데이터를 계속 감시하면서
: : : 그 데이터를 처리하는 역할을 합니다.
: : : 당연히 Thread 루프 내에서 데이터에 따라서 체크버튼을 만들지 안만들지를 결정합니다.
: : : 체크버튼을 만들기로 결정하면 제가 ListView를 서브클래싱한 놈에게 체크 박스를 만들도록 하지요.
: : :
: : : Thread 루프 안에서 체크버튼을 만들도록 시키지 않고, 다른 곳에서 만들도록 하면, 화면에 아주 이쁘게
: : : 잘 그려집니다.
: : :
: : : 도대체 이유가 뭘까요?