代码之家  ›  专栏  ›  技术社区  ›  IceCold

如何使用synchronize()?

  •  2
  • IceCold  · 技术社区  · 7 年前

    手册说,Synchronize是tthread的一个成员。 但是,它显示您可以直接调用Synchronize。其他 sources 说同样的话。

    //Synchronize() performs actions contained in a routine as if they were executed from the main VCL thread    
    
    void __fastcall TCriticalThread::Execute()
    {
       ...
       Synchronize(UpdateCaption);
       ...
    }
    

    但如果我这样做,编译器会告诉我“E2268调用未定义的函数'synchronize'”。当然,我包括图书馆:

    #include <System.Classes.hpp>
    

    另一方面,编译器找到tthread::synchronize,但它不接受mainthreaddid作为参数:

    TThread::Synchronize(MainThreadID, MainForm->UpdateCaption );
    

    ps:我是C++新手。

    1 回复  |  直到 7 年前
        1
  •  5
  •   Remy Lebeau    7 年前

    Synchronize() TThread TCriticalThread

    class TCriticalThread : public TThread
    {
    ...
    protected:
        virtual void __fastcall Execute();
    ...
    };
    
    void __fastcall TCriticalThread::Execute()
    {
       ...
       Synchronize(UpdateCaption);
       ...
    }
    

    void __fastcall TCriticalThread::Execute()
    {
       ...
       TThread::Synchronize(NULL, UpdateCaption);
       ...
    }