忍者ブログ
暇人おやじの暇なつぶやき
[23] [22] [21] [20] [19] [18] [17] [16] [15] [14] [13]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

突然だが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

コメント


コメントフォーム
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字


トラックバック
この記事にトラックバックする:


忍者ブログ [PR]
カレンダー
08 2024/09 10
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
フリーエリア
最新CM
最新TB
プロフィール
HN:
忍者 シオ才
性別:
非公開
バーコード
ブログ内検索