掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スレッドを終わらせる(not止める) (ID:37509)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんなこと? unit Unit4; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TThreadEx = class(TThread) private FIndex: Integer; public procedure Execute;override; property Index: Integer read FIndex write FIndex; end; TForm4 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); private { Private 宣言 } public procedure OnTerminated(Sender: TObject); end; var Form4: TForm4; Thread : TThreadEx; Index : Integer; implementation {$R *.dfm} procedure TThreadEx.Execute; begin while Terminated = False do begin Sleep(1); end; end; procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction); begin //スレッドの終了を待つ if Assigned(Thread) = True then begin Thread.Terminate; while Assigned(Thread) = True do begin Application.ProcessMessages; end; end; end; procedure TForm4.FormCreate(Sender: TObject); begin Index := 0; end; procedure TForm4.OnTerminated(Sender: TObject); begin Memo1.Lines.Add('Thread Terminated : ' + IntToStr(TThreadEx(Sender).Index)); Thread := nil; end; procedure TForm4.Button1Click(Sender: TObject); begin //スレッドの終了を待つ if Assigned(Thread) = True then begin Thread.Terminate; while Assigned(Thread) = True do begin Application.ProcessMessages; end; end; if Assigned(Thread) = False then begin Thread := TThreadEx.Create(False); Thread.OnTerminate := OnTerminated; Thread.FreeOnTerminate := True; Thread.Index := Index; Thread.Resume; Memo1.Lines.Add ('Thread Resume : ' + IntToStr(Index)); Inc(Index); end; end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.