(*--- 다음 프로그램은 스레드를 사용할 때 그리고 스레드가없는 프로그램 실행의 반대를 소개합니다.
답변. 중고 버튼을 클릭하면이 시점에서 스레드가 생성됩니다.
양식의 크기를 변경하고 이동할 때. NousedThread 버튼을 누르면 스레드가 생성되지 않으면 보내드립니다.
이제 프로그램이 계산되기 전에 다른 일을 할 수 없습니다!
단위 유닛 1;
인터페이스
용도
창, 메시지, 시스템, 변형, 클래스, 그래픽, 컨트롤, 양식,
대화 상자, stdctrls, 버튼;
유형
tform1 = 클래스 (tform)
중고 재판 : TBITBTN;
Nousedthread : tbittn;
절차 사용 wictthreadClick (sender : tobject);
절차 nousedthreadclick (sender : tobject);
사적인
{개인 선언}
공공의
{공개 선언}
끝;
var
form1 : tform1;
구현
{$ r *.dfm}
함수 MythreadFunc (P : 포인터) : longint; stdcall;
var
I : Longint;
DC : HDC;
S : 문자열;
시작하다
DC : = getdc (form1.handle);
i : = 0 ~ 500000의 경우 시작됩니다
s : = inttostr (i);
텍스트 (DC, 10,10, PCHAR (S), 길이 (S));
끝;
릴리스 (Form1.Handle, DC);
끝;
절차 tform1.usedthreadclick (sender : tobject);
var
hthread : thandle; // 핸들을 정의합니다
Threadid : dword;
시작하다
// 스레드를 만들고 스레드 함수가 동시에 호출됩니다.
hthread : = createthread (nil, 0,@mythreadfunc, nil, 0, threadid);
hthread = 0이면
MessageBox (handle, 'do n'tcreateathread', nil, mb_ok);
끝;
절차 tform1.nousedThreadClick (sender : tobject);
시작하다
Mythreadfunc (nil);
// 스레드가 생성되지 않으면 스레드 기능이 직접 호출됩니다.
끝;
끝.