突然だがDelphi
まー飽きやすい筆者なので、たまには違うことも書かないと続かないのでR
Delphiは筆者が長年付き合ってきた言語なのだが、Threadを使う方法というか
使うべきシステムにいままであたらなかった為に、Threadをどのように使うのかさえ知らずにいた
しかしThreadでプログラムを行うと、いままで全く違ったプログラムが出来そうな感じがする
以下に簡単にThreadの使い方を記載してみる
■Threadアプリケーションの作成に関して
新規作成 → スレッドオブジェクト → クラス名
ここで指定したクラスをメインプログラムで定義しCreateする
ここではThread1と入れてみると、新しいUnitに
type
Thread1 = class(TThread)
のコードが記載される
スレッドの本体の処理はこちらのUnitに自動で作成されたプロシジャー(Execute)に記載する
procedure Thread1.Execute;
begin
{ ToDo : スレッドとして実行したいコードをここに記述 }
end;
■スレッドの使用方法
メインプログラム(のUnit)でスレッドを定義する
下記はtrpipeという変数定義をthread1の型として定義
これでThreadクラスを使用することができる
もちろんこの際には最初に作成したUnitをUsesに追加する
private
{ Private 宣言 }
trpipe :Thread1;
■スレッド終了時の処理があれば定義する
procedure trpipeDone(Sender: TObject);
■使用する場所でスレッドのインスタンスを生成
例えばコマンドボタンの処理などに割り当てる
//ここでスレッドを生成し、処理を実行している
trpipe := Thread1.Create(False);
//スレッド終了時の処理を割り当てる
trpipe.OnTerminate := trpipeDone;
■終了時の実装
procedure TForm1.trpipeDone(Sender: TObject);
begin
ShowMessage('Thread End');
end;
■開放
プログラムが終了するとスレッドは開放されるが、自分で開放する場合
trpipe.free を実装する
注意点としては、複数スレッドを動かす際、そのスレッドの処理内容によっては
生成する順番によりスレッドが停止してしまう場合がある点だろうか
思いのほか簡単に利用できるので、タイマーなどはThreadにして起動することで
処理をスムーズに行える
PR