⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 threadtask.cpp

📁 本实例实现一个多线程的管理器。在应用程序中
💻 CPP
字号:
// ThreadTask.cpp: implementation of the ThreadTask class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
//#include "managerthread.h"
#include "ThreadTask.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
class CHandle : public CObject
{ 
	DECLARE_DYNAMIC( CHandle )
public: 
	HANDLE m_ThreadHandle; 
};
IMPLEMENT_DYNAMIC( CHandle, CObject )
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
DWORD WINAPI ThreadTaskpro(LPVOID pParam);
ThreadTask::ThreadTask()
{
m_bKeepGoing = TRUE;
DWORD nThreadId = 0;

 
	m_Handle = (HANDLE)::CreateThread(NULL,0,ThreadTaskpro,0,0,&nThreadId );
}
void ThreadTask::AddHandle( CONST HANDLE cHandle )
{
	CHandle *pHandle = new CHandle;
	pHandle->m_ThreadHandle = cHandle;
	m_ObList.AddTail( pHandle );
 
}
void ThreadTask::CloseThreadHandles()
{
		if ( m_ObList.GetCount() )
	{
		POSITION pos1, pos2;
		CHandle *pHandle = (CHandle *)NULL;
		DWORD dwExitCode = 0L;
		for( pos1=m_ObList.GetHeadPosition(); (pos2=pos1)!=POSITION(NULL); )
		{
			pHandle = DYNAMIC_DOWNCAST( CHandle, m_ObList.GetNext( pos1 ) );
			VERIFY( ::GetExitCodeThread( pHandle->m_ThreadHandle, &dwExitCode ) );
 
			if ( dwExitCode != STILL_ACTIVE )
			{
 
	 
					m_ObList.RemoveAt( pos2 );	 
		 
					VERIFY( ::CloseHandle( pHandle->m_ThreadHandle ) );
					delete pHandle;
					pHandle = (CHandle *)NULL;
					AfxMessageBox("一个线程已被关闭",MB_ICONINFORMATION);
	 
			}
		}
	}
}		 

ThreadTask::~ThreadTask()
{

}

   ThreadTask & ThreadTask::GetThreadTask()
{
static ThreadTask  Taker;
	return   (Taker) ;
}
BOOL ThreadTask::IsValid()
{
	BOOL bValid_Status = FALSE;
	if ( (this != NULL)
		&& AfxIsValidAddress( this, sizeof( ThreadTask ) )
		)
		bValid_Status = TRUE;
	return( bValid_Status );
}		

⌨️ 快捷键说明

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