(*--- โปรแกรมต่อไปนี้แนะนำการย้อนกลับของการเรียกใช้โปรแกรมเมื่อเราใช้เธรดและไม่มีเธรด
คำตอบ. เมื่อคลิกปุ่มที่ใช้แล้วเธรดจะถูกสร้างขึ้นในเวลานี้เราสามารถทำการคำนวณในโปรแกรม
เมื่อเปลี่ยนขนาดของแบบฟอร์มและเคลื่อนย้าย เมื่อกดปุ่ม NouSedThread หากไม่ได้สร้างเธรดเราจะส่ง
ตอนนี้คุณไม่สามารถทำอะไรได้ก่อนที่โปรแกรมจะถูกคำนวณ!
บทที่หน่วย 1;
ส่วนต่อประสาน
ใช้
Windows, ข้อความ, sysutils, ตัวแปร, คลาส, กราฟิก, การควบคุม, รูปแบบ,
กล่องโต้ตอบ, stdctrls, ปุ่ม;
พิมพ์
tform1 = คลาส (tform)
ใช้แล้ว: tbitbtn;
NousedThread: tbitbtn;
ขั้นตอนการใช้งาน threadclick (ผู้ส่ง: tobject);
ขั้นตอน nousedthreadclick (ผู้ส่ง: tobject);
ส่วนตัว
{ประกาศส่วนตัว}
สาธารณะ
{ประกาศสาธารณะ}
จบ;
วาจา
Form1: TFORM1;
การดำเนินการ
{$ r *.dfm}
ฟังก์ชั่น mythreadfunc (p: ตัวชี้): longint; stdcall;
วาจา
ฉัน: Longint;
DC: HDC;
S: String;
เริ่ม
DC: = getDC (form1.handle);
สำหรับ i: = 0 ถึง 500000 เริ่มต้น
s: = inttoStr (i);
textout (dc, 10,10, pchar (s), ความยาว (s));
จบ;
ปล่อยออกมา (form1.handle, DC);
จบ;
ขั้นตอน tform1.usedthreadclick (ผู้ส่ง: tobject);
วาจา
hthread: thandle; // กำหนดที่จับ
threadid: dword;
เริ่ม
// สร้างเธรดและฟังก์ชันเธรดถูกเรียกในเวลาเดียวกัน
HTHREAD: = CREATETHREAD (NIL, 0,@MyThreadFunc, Nil, 0, ThreadId);
ถ้า hthread = 0 แล้ว
MessageBox (จัดการ, 'NonteAteathRead', NIL, MB_OK);
จบ;
ขั้นตอน tform1.nousedthreadclick (ผู้ส่ง: tobject);
เริ่ม
MYTHREADFUNC (ไม่มี);
// เมื่อไม่มีเธรดถูกสร้างขึ้นฟังก์ชันเธรดจะเรียกโดยตรง
จบ;
จบ.