TThread::TerminatedSet - C++ Builder

C++ Builder 参考手册 ➙ System::Classes ➙ TThread ➙ TerminatedSet


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

virtual void __fastcall TerminatedSet(void);

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

参数:

无。

返回值:

无。

  • 使用 Terminate 方法 Terminated 属性先置为 true,然后调用 TerminatedSet 方法,可以在 TerminatedSet 方法里面写让线程尽快停下来的程序代码,可以参考本文后面的例子。

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

  • 使用 System::Syncobjs::TEvent 事件,每次等待这个事件超时 (1秒) 执行一次显示 SetLabelValue,如果产生了这个事件,即在 TerminatedSet 里面调用了事件的 SetEvent 方法,事件的 WaitFor 方法结束等待,并且立即结束执行线程。
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;
    }
}

相关:

  • System::Classes::TThread::Terminate
  • System::Classes::TThread::Terminated
  • System::Classes::TThread::FreeOnTerminate
  • System::Classes::TThread::Finished
  • System::Classes::TThread::Started
  • System::Classes::TThread::Execute
  • System::Classes::TThread::WaitFor
  • System::Classes::TThread
  • System::TObject
  • VCL 类继承关系

C++ Builder 参考手册 ➙ System::Classes ➙ TThread ➙ TerminatedSet

你可能感兴趣的:(TThread::TerminatedSet - C++ Builder)