1

編集:何が起こっているのかをよりよく理解できたので、この質問をより適切に表現して、より役立つようにできると思います。

次の 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::QueueTThreadProcedureクラスのインスタンスを に渡すときに呼び出される関数を継承して定義する適切な方法は何TThread::Queueですか?

4

1 に答える 1