スレッド オブジェクトを定義する

提供: RAD Studio
移動先: 案内検索

マルチスレッド アプリケーションの構築 への移動


スレッド オブジェクトを定義するには:

  1. [ファイル|新規作成|その他|Delphi プロジェクト|Delphi ファイル]または[ファイル|新規作成|その他|C++Builder ファイル]を選択し、[スレッド オブジェクト]アイコンをダブルクリックします。[スレッド オブジェクトの新規作成]ダイアログ ボックスが表示されます。
  2. クラス名を、たとえば「TMyThread」などと入力します。
  3. オプションで、[名前付きスレッド]チェック ボックスをオンにし、スレッドの名前を、たとえば「MyThreadName」などと入力します。

    ヒント: [名前付きスレッド]をオンにして[スレッド名]フィールドに名前を入力すると、デバッグ時にスレッドを追跡しやすくなります。

  4. [OK]をクリックします。

コード エディタにスレッド オブジェクトのスケルトン コードが表示されます。

スレッド クラスに TMyThread という名前を付けた場合、新しいユニットとして生成されたコードは次のようになります。

  unit Unit1;
  
  interface
  
  uses
    Classes;
  
  type
    TMyThread = class(TThread)
    private
      { Private declarations }
    protected
      procedure Execute; override;
    end;
  
  implementation
  
  { Important: Methods and properties of objects in visual components can only be
    used in a method called using Synchronize, for example,
  
        Synchronize(UpdateCaption);
  
    and UpdateCaption could look like,
  
      procedure TMyThread.UpdateCaption;
      begin
        Form1.Caption := 'Updated in a thread';
      end; }
  
  { TMyThread }
  
  procedure TMyThread.Execute;
  begin
    { Place thread code here }
  end;
  
  end.

スレッドの名前を追加すると、TThread のクラス メソッド NameThreadForDebugging の呼び出しが TThread の Execute 手続きに追加されます。

  unit Unit1;
  
  interface
  
  uses
    Classes;
  
  type
    TMyThread = class(TThread)
    private
      { Private declarations }
    protected
      procedure Execute; override;
    end;
  
  implementation
  
  { Important: Methods and properties of objects in visual components can only be
    used in a method called using Synchronize, for example,
  
        Synchronize(UpdateCaption);
  
    and UpdateCaption could look like,
  
      procedure TMyThread.UpdateCaption;
      begin
        Form1.Caption := 'Updated in a thread';
      end; }
  
  { TMyThread }
  
  procedure TMyThread.Execute;
  begin
    NameThreadForDebugging('My Cool Thread');
    { Place thread code here }
  end;
  
  end.
  // Unit1.cpp
  #include "Unit3.h"
  #pragma package(smart_init)
 
  //   Important: Methods and properties of objects in VCL can only be
  //   used in a method called using Synchronize, for example:
  //
  //      Synchronize(&UpdateCaption);
  //
  //   where UpdateCaption could look like:
  //
  //      void __fastcall mythread::UpdateCaption()
  //      {
  //        Form1->Caption = "Updated in a thread";
  //      }
 
  __fastcall TMyThread::TMyThread(bool CreateSuspended)
 	: TThread(CreateSuspended)
  {
  }
 
  void __fastcall TMyThread::Execute()
  {
 	TThread::NameThreadForDebugging("My Cool Thread");
 	//---- Place thread code here ----
  }

関連項目