Q&A

  • thread 생성 문제 입니다. 도와주세요.
고수님 몇일동안 원하는 정답을 찾지
못하고 해맸습니다. 그저 쉽게 답을 찾을려고
글을 쓴 것이아니라 해도해도 안되어 글을
올리는 것이니 꼭 좀 답변 해 주세요....^^


Query Open 하기 전에 "오픈중입니다"라는 메시지를
MessageBox 함수로 보여 줄려고 다음과 같이 코딩을
했는데요....
Open 전에 thread를 create 했는데도 불구하고
Query Open이 끝날때까지는 아무런 변화가 없다가
Open 수행이 끝나는 순간 화면에 메시지가
나타난다는 것입니다.
어떻게 해야 이 문제를 해결 할까요?

그리고 두번째 질문은
CreateThread 하면서 보낸 문자를 어떻게 하면
Mboxbythread내의 MessageBox에서 보여 줄수
있을까요

부탁 드립니다.

고맙습니다.

======= 코딩 일부분 =====================
function Mboxbythread(P:Pointer):LongInt; StdCall;
begin
   MessageBox(Application.Handle, '이 메시지박스는 Thread 입니다',
                       '알  림', MB_APPLMODAL + MB_SETFOREGROUND);

end;

procedure TForm.ShowMBoxThread(S:String);
var ThreadHandle : THandle;
    ThreadID: DWORD;
begin

   ThreadHandle := CreateThread(nil, 0, @Mboxbythread,
                                    @S,  0, ThreadID);

   // 스레드를 생성하는 데 실패하면
   if ThreadHandle = 0 then begin
      MessageDlg('메시지 박스 스레드를 생성 할 수 없습니다' ,
                    mtError,   [MbOK], 0);
      exit;
   end;
end;

procedure TForm.BitBtn_SearchClick(Sender: TObject);
var i:integer;
begin

  ShowMBoxThread('오픈중입니다....');

  with Query_Error do begin
     Close;
     SQL.Clear;
     SQL.Add(Make_SearchQuery());
     Open;
//     FetchAll;
      ................
end;
0  COMMENTS