编辑:现在我对正在发生的事情有了更好的了解,我想我可以更好地表达这个问题,这样它就更有用了。
我正在尝试在 C++ 中复制以下 delphi 代码
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
?