昔、私が Delphi でスレッドを扱い始めたとき、私はスレッドTThread.Resume
のコンストラクターの最後で呼び出すことによってスレッド自体を開始させていましたが、今でも次のように行っています。
constructor TMyThread.Create(const ASomeParam: String);
begin
inherited Create(True);
try
FSomeParam:= ASomeParam;
//Initialize some stuff here...
finally
Resume;
end;
end;
それ以来、代わりResume
に使用することを支持して廃止されましたStart
。ただし、Start
スレッドの外部からのみ呼び出すことができ、コンストラクター内から呼び出すことはできません。
上記のように使用してスレッドを設計し続けていますが、非推奨であることはわかっていますが、スレッドの外部Resume
から呼び出す必要がないという理由だけです。Start
呼び出す必要があるのは少し面倒です:
FMyThread := TMyThread.Create(SomeParamValue);
FMyThread.Start;
質問: この変更が行われた理由は何ですか? つまり、代わりResume
に使用することを望んでいるほど、使用することの何が間違っているのでしょうか?Start
EDIT Sedatの答えの後、これはコンストラクター内でスレッドが実際に実行を開始する時期に本当に依存していると思います。