(*--- يقدم البرنامج التالي عكس تشغيل البرنامج عندما نستخدم مؤشرات الترابط وبدون مؤشرات ترابط.
إجابة. عند النقر فوق الزر المستخدم ، يتم إنشاء مؤشر ترابط.
عند تغيير حجم النموذج ونقله. عند الضغط على زر nousedthread ، إذا لم يتم إنشاء مؤشر الترابط ، فسوف نرسل
الآن لا يمكنك فعل أي شيء آخر قبل حساب البرنامج!
الوحدة 1 ؛
واجهة
يستخدم
Windows ، الرسائل ، sysutils ، المتغيرات ، الفئات ، الرسومات ، عناصر التحكم ، النماذج ،
مربعات الحوار ، stdctrls ، الأزرار ؛
يكتب
tform1 = فئة (tform)
المستخدمة: tbitbtn ؛
nousedthread: tbitbtn ؛
الإجراءات المستخدمة streadClick (المرسل: TOBJECT) ؛
الإجراء nousedThreadClick (المرسل: TOBJECT) ؛
خاص
{إعلانات خاصة}
عام
{الإعلانات العامة}
نهاية؛
var
Form1: Tform1 ؛
تطبيق
{$ r *.dfm}
وظيفة mythreadfunc (p: مؤشر): longint ؛ stdcall ؛
var
أنا: Longint ؛
DC: HDC ؛
S: سلسلة.
يبدأ
DC: = getDC (form1.handle) ؛
لأني: = 0 إلى 500000 تبدأ
S: = inttoStr (i) ؛
Textout (DC ، 10،10 ، pchar (s) ، الطول (s)) ؛
نهاية؛
تم إصداره (form1.handle ، DC) ؛
نهاية؛
الإجراء tform1.usedThReadClick (المرسل: tobject) ؛
var
Hthread: Thandle ؛ // تحديد مقبض
ThreadId: Dword ؛
يبدأ
// قم بإنشاء مؤشر ترابط ، ويتم استدعاء وظيفة مؤشر الترابط في نفس الوقت
Hthread: = createThread (nil ، 0 ،@mythreadfunc ، nil ، 0 ، threadId) ؛
إذا hathread = 0 ثم
MessageBox (مقبض ، 'nottcreateathread' ، nil ، mb_ok) ؛
نهاية؛
الإجراء tform1.nousedThReadClick (المرسل: tobject) ؛
يبدأ
mythreadfunc (لا شيء) ؛
// عند عدم إنشاء مؤشر ترابط ، يتم استدعاء وظيفة مؤشر الترابط مباشرة
نهاية؛
نهاية.