編集:何が起こっているのかをよりよく理解できたので、この質問をより適切に表現して、より役立つようにできると思います。
次の Delphi コードを C++ で複製しようとしています。
TThread.Queue(nil,
procedure
begin
LogMessage("test");
end
);
TMemo
コードの目的は、スレッド セーフな方法でフォームのを更新するメソッドを呼び出すことです。これは、私が呼び出そうとしているメソッドのC++バージョンですThread.Queue
void __fastcall TClientForm::LogMessage( String message )
{
MemoLog->Lines->Add( message );
}
CLANG 拡張なしで BCC32 コンパイラを使用しているため、Lambda を使用することはできません。代わりに、このドキュメントに従って、必要な作業を行うためにメソッドをTThreadProcedure
オーバーライドする継承クラスを作成する必要があります。Invoke()
次に、そのクラスのインスタンスを に渡すことができますTThread::Queue
。
TThreadProcuedure
呼び出しメソッドを継承して含む次のクラスを作成しました。
class TMyThreadProcedure : TThreadProcedure
{
void __fastcall Invoke( String message );
};
ただし、TThreadProcedure
は抽象クラスであるため、単純にそのインスタンスを作成して に渡すことはできませんTThread::Queue
。TThreadProcedure
クラスのインスタンスを に渡すときに呼び出される関数を継承して定義する適切な方法は何TThread::Queue
ですか?