スレッドクラスのひな形が作成されます。
Execute()に実行する処理を記述します。
void __fastcall TMyThread::Execute()
{
for (int i = 0; i < 1000; i++)
{
std::cout << "Nice!";
}
}
スレッドクラスのインスタンスを作成し、起動します。
int _tmain(int argc, _TCHAR* argv[])
{
//"Nice!"を出力するTMyThreadを生成して起動する
TMyThread* thread = new TMyThread(false);
//メインスレッドでは"Good!"を出力する
for (int i = 0; i < 1000; i++)
{
std::cout << "Good!";
}
Sleep(5000);
return 0;
}
TThreadクラスのコンストラクタの引数CreateSuspendedにfalseを指定すると、インスタンス作成後、Execute()メソッドがすぐに呼び出されます。
スレッドを自動的に実行するのではなく明示的に実行する場合は、コンストラクタの引数CreateSuspendedにtrueを指定し、 TThread.Resumeメソッドで実行します。
※C++Builder 2010から、TThread.Resumeメソッドは非推奨になりました。代わりにTThread.Startメソッドを使用します。
int _tmain(int argc, _TCHAR* argv[])
{
#インスタンスの作成
TMyThread* thread = new TMyThread(true);
#スレッドの実行
thread->Resume();
for (int i = 0; i < 1000; i++)
{
std::cout << "Good!";
}
Sleep(5000);
return 0;
}
メインスレッドが終了すると、すべてのスレッドが終了します。
TThread.Suspendメソッドを使うと、実行中のスレッドを一時停止することができます。
一時停止したスレッドを再実行するには、TThread.Resumeメソッドで呼び出します。
※C++Builder 2010から、TThread.Resumeメソッドは非推奨になりました。代わりにTThread.Startメソッドを使用します。
int _tmain(int argc, _TCHAR* argv[])
{
//スレッドの実行
TMyThread* thread = new TMyThread(false);
//スレッドの一時停止
thread->Suspend();
for (int i = 0; i < 1000; i++)
{
std::cout << "Good!";
}
//スレッドの再実行
thread->Resume();
Sleep(5000);
return 0;
}
TThread.FreeOnTerminateプロパティがtrueの場合、処理が終了すると自動的に破棄されます。
TThread.FreeOnTerminateプロパティがfalseの場合は、明示的に破棄する必要があります。
TThread.Finished プロパティがtrueの場合は、スレッドは終了しています。