(*---次のプログラムでは、スレッドを使用してスレッドなしでプログラムを実行する逆を紹介します。
答え。使用されているThreadボタンをクリックすると、この時点で作成されます。
フォームのサイズを変更して移動するとき。 NousedThreadボタンが押されたら、スレッドが作成されていない場合、送信します
これで、プログラムが計算される前に他に何もできません!
ユニットユニット1;
インタフェース
用途
窓、メッセージ、sysutils、バリアント、クラス、グラフィック、コントロール、フォーム、
ダイアログ、stdctrls、ボタン。
タイプ
tform1 = class(tform)
使用済み:tbitbtn;
nousedthread:tbitbtn;
手順ThreadClick(送信者:tobject)を使用しました。
手順NousedThreadClick(送信者:tobject);
プライベート
{プライベート宣言}
公共
{公開宣言}
終わり;
var
form1:tform1;
実装
{$ r *.dfm}
function mythreadfunc(p:pointer):longint; stdcall;
var
I:Longint;
DC:HDC;
S:文字列;
始める
DC:= getDC(form1.handle);
i:= 0から500000の場合は開始します
s:= inttostr(i);
Textout(DC、10,10、PCHEAR(S)、長さ(S));
終わり;
releasec(form1.handle、dc);
終わり;
手順tform1.usedthreadclick(sender:tobject);
var
hthread:thandle; //ハンドルを定義します
threadid:dword;
始める
//スレッドを作成すると、スレッド関数が同時に呼び出されます
hthread:= createThread(nil、0、@mythreadfunc、nil、0、threadid);
hthread = 0の場合
messagebox(handle、 'not createathread'、nil、mb_ok);
終わり;
手順tform1.nousedthreadclick(sender:tobject);
始める
mythreadfunc(nil);
//スレッドが作成されない場合、スレッド関数は直接呼び出されます
終わり;
終わり。