//--------------------------------------------------------------------------- #include #pragma hdrstop #include "BaseThread.h" //--------------------------------------------------------------------------- #pragma package(smart_init) __fastcall TBaseThread::TBaseThread() : TThread(true) { m_bWaiting = false; m_hHaltSema = CreateSemaphore( NULL, 0, 1, NULL ); } //--------------------------------------------------------------------------- __fastcall TBaseThread::~TBaseThread() { if( m_hHaltSema ){ CloseHandle( m_hHaltSema ); m_hHaltSema = NULL; } } //--------------------------------------------------------------------------- bool __fastcall TBaseThread::Halt( DWORD dwMS ) { if( int(dwMS)>0 ){ // m_bWaiting = true; WaitForSingleObject( m_hHaltSema, dwMS ); // m_bWaiting = false; } return !Terminated; } //--------------------------------------------------------------------------- void __fastcall TBaseThread::Cancel(void) { Terminate(); Suspended = false; ReleaseSemaphore( m_hHaltSema, 1, NULL ); } //---------------------------------------------------------------------------