TThread::TerminatedSet - C++ Bui

2020-06-24  本文已影响0人  玄坴

C++ Builder 参考手册 ➙ System::Classes ➙ TThreadTerminatedSet


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

virtual void __fastcall TerminatedSet(void);

TerminatedSet 是 System::Classes::TThread 的成员函数,当 Terminated 属性变为 true 时产生的事件,线程需要尽快结束执行。

参数:

无。

返回值:

无。


例子:在线程里面每隔 1 秒调用一次 Form1->Label1 显示的数字加 1,点击 Button1 按钮开始线程,点击 Button2 按钮结束线程。

class TTestThread : public System::Classes::TThread
{
private:
    System::Syncobjs::TEvent *lpEvent;
    void __fastcall SetLabelValue(void)
    {
        Form1->Label1->Caption = StrToIntDef(Form1->Label1->Caption,0) + 1;
    }
protected:
    void __fastcall Execute(void)
    {
        while(!Terminated)
        {
            Synchronize(SetLabelValue);
            if(lpEvent->WaitFor(1000)==wrSignaled)
                break;
        }
    }
    void __fastcall TerminatedSet(void)
    {
        lpEvent->SetEvent();
    }
public:
    __fastcall TTestThread()
    {
        lpEvent = new System::Syncobjs::TEvent(false);
    }
    __fastcall ~TTestThread()
    {
        delete lpEvent;
    }
};

TTestThread *lpTestThread = NULL;

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    if(!lpTestThread)
    {
        lpTestThread = new TTestThread;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    if(lpTestThread)
    {
        lpTestThread->Terminate();
        lpTestThread->WaitFor();
        delete lpTestThread;
        lpTestThread = NULL;
    }
}

相关:


C++ Builder 参考手册 ➙ System::Classes ➙ TThreadTerminatedSet

上一篇下一篇

猜你喜欢

热点阅读