掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スレッド実行中にメインフォームをコントロールするには? (ID:36395)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
メインフォーム(Unit1.pas)からボタンを押して スレッド(Unit2.pas)を呼び出して実行します。 Unit2.pasではfor等では置き換えられない単独で 時間のかかる処理を行います。 (今回はsleepで代用しました。) この時、メインフォームはボタンを押してから sleepが終わるまでコントロールできなくなります。 これを回避するにはどうしたらいいでしょうか? TURBO DELPHIです。 ■Unit1.pasの内容 //---------------------------------------------------- unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,Unit2, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private 宣言 } thread: MyThread; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin thread:=MyThread.Create(False); end; end. //---------------------------------------------------- ■Unit2.pasの内容 //---------------------------------------------------- unit Unit2; interface uses Windows,Classes,Dialogs; type MyThread = class(TThread) private { Private 宣言 } protected procedure Execute; override; procedure Todo; end; implementation { MyThread } procedure MyThread.Execute; begin { TODO: スレッドとして実行したいコードをここに記述してください } Synchronize(Todo); end; procedure MyThread.Todo; begin sleep(10000); showmessage('end'); end; end. //----------------------------------------------------
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.