어떤 시점에서 쓰레드를 생성시키고.. 다른 시점에서 또 쓰레들 생성하고 싶습니다..
물론.. 쓰레드에서 하는 작업은.. 다르구요..
전..
/////////////////
procedure TForm1.Create_Thread;
var
hThread : THandle;
ThreadID: DWORD;
begin
hThread := CreateThread(nil,
0,
@My1Thread,
nil,
0,
ThreadID);
if hThread = 0 then
Application.MessageBox('Thread fail', 'ok', 0);
end;
procedure TForm1.Create_Thread2;
var
hThread : THandle;
ThreadID: DWORD;
begin
hThread := CreateThread(nil,
0,
@My2Thread,
nil,
0,
ThreadID);
if hThread = 0 then
Application.MessageBox('Thread fail', 'ok', 0);
end;
///////////
이렇게.. 함수를 2개 만들어 사용해 봤는데..
Create_Thread1는 실행 되는데.. Create_Thread2에서 My2Thread가 선언이 되지
않았다고..그래요..
Create_Thread1과 같이 선언했는데..
어떻게 해야 하는지.. 답변을 부탁드립니다..
쓰레드를 사용하는 간단한 방법을 말씀드릴께요
먼저 쓰레드 클래쓰를 하나 선언하는 방법입니다.
TThread형이름 = class(TThread)
protected
procedure 함수명;
public
procedure Execute; override;
end;
이렇게 쓰면 기본적으로 쓰레드를 사용할 수 있는 골격이 갖추어 집니다.
다음으로 쓰레드를 생성을 합니다.
// 쓰레드 객체를 실제로 생성하는 코드입니다. 파라미터로 True를 넘기고 있습니다...
// 파라미터 값을 false로 하면 생성과 동시에 쓰레드가 실행하게 되구요
// True로 하게 되면 resume 메쏘드를 호출한 후에 비로소 실행하게 됩니다.
Thread변수 := TThread변수형.Create(true);
Thread변수.Priority := tpIdle;
위처럼 쓰면 님이 원하시는 대로 여러개의 쓰레드를 생성해서 사용하실 수 가 있습니다.
위에 상수대입에는 tpPiorty 또는 tp... 로 시작되는 여러가지 상수가 있습니다. 필요에 따라 선언해서 쓰시면 되죠.
일반적으로 tpNormal 를 쓰시면 됩니다.
Thread변수.Resume; //실행합니다.
// Suspend : 이 메쏘드는 동작중인 쓰레드를 멈추게 해주는 역할을 합니다.
// Resume : 이 메쏘드는 suspend에 의해서 멈추어진 쓰레드를 다시 가동하게 합니다.
CreateThread 와 머가 다른지 물어보시는 분들도 계신데
쓰레드를 생성하면 CreateThread 함수를 내부적으로 호출하므로 신경쓰지 않아도 됩니다.
해서, 이렇게 하면 쓰레드가 생성이 되며 동시에 실행이 됩니다.
실행이 되면 쓰레드의 Execute 가 실행되는건 아시죠?
lthee wrote:
> 어떤 시점에서 쓰레드를 생성시키고.. 다른 시점에서 또 쓰레들 생성하고 싶습니다..
> 물론.. 쓰레드에서 하는 작업은.. 다르구요..
>
> 전..
>
> /////////////////
> procedure TForm1.Create_Thread;
> var
> hThread : THandle;
> ThreadID: DWORD;
> begin
> hThread := CreateThread(nil,
> 0,
> @My1Thread,
> nil,
> 0,
> ThreadID);
> if hThread = 0 then
> Application.MessageBox('Thread fail', 'ok', 0);
> end;
>
>
> procedure TForm1.Create_Thread2;
> var
> hThread : THandle;
> ThreadID: DWORD;
> begin
> hThread := CreateThread(nil,
> 0,
> @My2Thread,
> nil,
> 0,
> ThreadID);
> if hThread = 0 then
> Application.MessageBox('Thread fail', 'ok', 0);
> end;
>
> ///////////
>
>
> 이렇게.. 함수를 2개 만들어 사용해 봤는데..
> Create_Thread1는 실행 되는데.. Create_Thread2에서 My2Thread가 선언이 되지
> 않았다고..그래요..
> Create_Thread1과 같이 선언했는데..
>
> 어떻게 해야 하는지.. 답변을 부탁드립니다..
>