cthreadobject.cpp

来自「一个非常实用的号码魔方工具」· C++ 代码 · 共 36 行

CPP
36 行
字号
//---------------------------------------------------------------------------


#pragma hdrstop

#include "CThreadObject.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
CThreadObject::CThreadObject(LPVOID Owner,LPTHREAD_START_ROUTINE lpStartAddres, char * ThreadName)
             : m_Owner(Owner),
               m_lpStartAddres(lpStartAddres),
               m_bActive(false)
{
    memset( m_ThreadName, 0x0, sizeof(m_ThreadName) );
    memcpy( m_ThreadName, ThreadName, strlen(ThreadName) > 100 ? 100 : strlen(ThreadName) );
    m_hThread = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, (LPVOID)this, 0, &m_ThreadId );
}
CThreadObject::~CThreadObject()
{
    WaitForSingleObject( m_hThread, 500 );
    if( !m_bActive )
    {
        Terminate();
    }
    CloseHandle( m_hThread );
}
void WINAPI CThreadObject::ThreadProc( LPVOID lpParam )
{
    CThreadObject * m_thread = (CThreadObject*)lpParam;
    m_thread->m_bActive = true;
    m_thread->m_lpStartAddres( m_thread->m_Owner );
    m_thread->m_bActive = false;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?