类内线程 接口类 IThread 实现

来源:互联网 发布:数据冗余类型 编辑:程序博客网 时间:2024/04/19 09:32
 

/***************************************************************
* NAME             : IThread.h
* FUNCTION         : 类内线程 接口类
* PROGRAMMED       : Ming_zhang
* DATE(ORG)        : July 28 2011
* PROJECT          : MTL
* OS               : Windows XP
* HISTORY          :
* ID --- DATE -----------NOTE-------------------------------
* 00 
***************************************************************/

#ifndef _ITHREAD_H_
#define _ITHREAD_H_

/***********************Global Variable Declare***************/
//#define    -1;                                       
//////////////////////////////////////////////////////////////

/************************INCLUDE FILES*************************/
//#pragma warning (disable : 4786)
//#include <iostream>
//#include <string>
//#include <map>
//using namespace std;
///////////////////////////////////////////////////////////////


/***************************************************************  
* NAME             : IThread                         
* BASE CLASS NAME  :                                    
* FUNCTION         :                                    
* Interface        :
***************************************************************/
class IThread
{
public:
// Constructors & Destructor
 IThread();
 virtual ~IThread();
 
 int Thread_Create();       //线程创建函数
 const CString & Thread_ErrInfo()
 {
  return m_sErrInfo;
 }
// Interface
public:
protected:
 static unsigned long _stdcall Therad_Enter(void *lpvoid );//线程入口函数
private:
 virtual int Thread_Main() = 0; //线程处理函数
 virtual int Thread_BefMain();  //线程处理函数 前处理函数
 virtual int Thread_AftMain();  //线程处理函数 后处理函数
 virtual int Thread_ErrMain();  //线程处理函数 错误处理函数

protected:
 CString m_sErrInfo;           //错误信息
 HANDLE m_hThread;             //线程句柄
 DWORD m_nThreadID;            //线程ID
// Attributes
private:
// Operations

// Attributes

};

#endif;

 

/***************************************************************
* NAME         : IThread.cpp
* FUNCTION     :
* PROGRAMMED   : Ming_zhang
* DATE(ORG)    : July 28 2011
* PROJECT      : MTL
* OS           : Windows XP
* HISTORY      :
* ID --- DATE -----------NOTE-------------------------------
* 00 
***************************************************************/


/************************INCLUDE FILES*************************/
#include "stdafx.h"
#include "IThread.h"
//#include <string>
//using namespace std;
///////////////////////////////////////////////////////////////

IThread::IThread()
{
}

IThread::~IThread()
{
}
/********************************************************************
* NAME         : Therad_Enter
* FUNCTION     :
* PARAMETER    :
* RETURN       :
* PROGRAMMER   : Ming zhang
* DATE(ORG)    : July 28 2011
* UPDATE       :
* MEMO         :
********************************************************************/
unsigned long _stdcall IThread::Therad_Enter(void *lpvoid )
{
 IThread* pThis = (IThread*)lpvoid;
 int nRet = 0;
 if(1==pThis->Thread_BefMain()) //线程执行之前做一些操作
 {
  if(1==pThis->Thread_Main()) //执行线程
   pThis->Thread_AftMain();//线程成功执行完后执行一些操作
  else
   pThis->Thread_ErrMain();//线程执行错误后执行一些操作
 }
 return 1;
}
/********************************************************************
* NAME         : Thread_BefMain
* FUNCTION     : Thread_Main运行之前提供处理机会给子类.
* PARAMETER    :
* RETURN       : 1: 可以接着运行Thread_Main.0: 不可以接着运行Thread_Main
* PROGRAMMER   : Ming zhang
* DATE(ORG)    : July 28 2011
* UPDATE       :
* MEMO         :
********************************************************************/
int IThread::Thread_BefMain() //线程处理函数
{
 return 1;
}
/********************************************************************
* NAME         : Thread_Main
* FUNCTION     : 线程运行主函数
* PARAMETER    :
* RETURN       :
* PROGRAMMER   : Ming zhang
* DATE(ORG)    : July 28 2011
* UPDATE       :
* MEMO         :
********************************************************************/
int IThread::Thread_Main()
{
 return 1;
}
/********************************************************************
* NAME         : Thread_AftMain
* FUNCTION     : 在线程运行之后做一些操作
* PARAMETER    :
* RETURN       :
* PROGRAMMER   : Ming zhang
* DATE(ORG)    : July 28 2011
* UPDATE       :
* MEMO         :
********************************************************************/
int IThread::Thread_AftMain()
{
 return 1;
}
/********************************************************************
* NAME         : Thread_ErrMain
* FUNCTION     : 错误处理函数
* PARAMETER    :
* RETURN       :
* PROGRAMMER   : Ming zhang
* DATE(ORG)    : July 28 2011
* UPDATE       :
* MEMO         :
********************************************************************/
int IThread::Thread_ErrMain()
{
 return 1;
}
/********************************************************************
* NAME         : Thread_Create
* FUNCTION     : 创建 类内线程
* PARAMETER    :
* RETURN       : 0 失败, 1 成功
* PROGRAMMER   : Ming zhang
* DATE(ORG)    : July 28 2011
* UPDATE       :
* MEMO         :
********************************************************************/
int IThread::Thread_Create()
{
 m_hThread = CreateThread(NULL, 0,Therad_Enter, this,NULL , &m_nThreadID);
 if(m_hThread==NULL)
 {
  m_sErrInfo.Format("创建线程失败 [%d]!",GetLastError());
  return 0;
 }
 return 1;
}


 

 

 

 

 

 

原创粉丝点击