美文网首页
TThread::Execute - C++ Builder

TThread::Execute - C++ Builder

作者: 玄坴 | 来源:发表于2020-05-29 09:02 被阅读0次

    C++ Builder 参考手册TThreadExecute


    头文件:#include <System.Classes.hpp>
    命名空间:System::Classes
    类:TThread
    访问权限:protected:
    函数原型:

    virtual void __fastcall Execute(void) = 0;
    

    System::Classes::TThread::Execute 是 System::Classes::TThread 的纯虚成员函数,是这个线程类的线程函数,子类必须重载实现这个函数。

    参数:

    无。

    返回值:

    无。

    • Execute 方法是这个线程类的线程函数,是纯虚函数,子类必须重载和实现;
    • 如果构造函数的参数为 false,或者没有参数,线程对象创建出来就开始执行 Execute 方法;
    • 如果构造函数的参数为 true,线程对象创建出来的时候线程是被挂起状态,没有开始执行 Execute 方法,需要调用 Start 方法开始执行 Execute 方法;
    • 如果 FreeOnTerminate 属性置为 true,Execute 方法执行结束,线程就会被销毁,所以构造函数的参数要为 true 即创建出来的时候线程挂起,然后用 Start 方法开始执行,调用 Start 方法之后,就不要在 Execute 方法之外的任何地方调用类的成员了,除非确认这个对象还没被销毁。

    例子:点击按钮 Button1 创建并且执行线程,在线程里面,每隔 200 毫秒在 Form1->Label1 上依次输出 1 ~ 10 的整数,线程结束时线程对象自动销毁。

    由于在线程里面,不能直接处理显示,所以用 Synchronize 方法调用处理显示的函数,这样处理显示的函数会同步在主线程里面运行。

    class TTestThread : public System::Classes::TThread
    {
    public:
        __fastcall TTestThread();
    protected:
        void __fastcall Execute(void);
    private:
        int _iProgress;
        void __fastcall ShowProgress(void);
    };
    
    __fastcall TTestThread::TTestThread()
        : System::Classes::TThread(true)
    {
        FreeOnTerminate = true;
    }
    
    void __fastcall TTestThread::Execute(void)
    {
        for(_iProgress=1; _iProgress<=10; _iProgress++)
        {
            Synchronize(ShowProgress);
            Sleep(200);
        }
    }
    
    void __fastcall TTestThread::ShowProgress(void)
    {
        Form1->Label1->Caption = _iProgress;
    }
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        TTestThread *lpThread = new TTestThread;
        lpThread->Start();
    }
    
    Form1 上放一个 Label1 和一个按钮 Button1

    运行结果:

    运行结果

    参考:

    • System::Classes::TThread::Synchronize
    • System::Classes::TThread::Start
    • System::Classes::TThread::Terminate
    • System::Classes::TThread::Terminated
    • System::Classes::TThread::OnTerminate
    • System::Classes::TThread::FatalException
    • System::Classes::TThread::FreeOnTerminate
    • System::Classes::TThread::TThread
    • System::Classes::TThread
    • System::TObject
    • VCL 类继承关系

    C++ Builder 参考手册TThreadExecute

    相关文章

      网友评论

          本文标题:TThread::Execute - C++ Builder

          本文链接:https://www.haomeiwen.com/subject/bxhlohtx.html