C++类中将成员函数设置为线程处理过程的一点使用技巧

C++类中只有静态成员函数才能设置为线程的处理过程函数,但是此时静态成员函数只能调用类的静态成员函数和方法,这对调用类中的方法和成员变量造成了很大的局限性。那么如何解决这个问题呢?下面介绍一种普遍使用的编程技巧!

//.h文件

#ifndef CCONTROLMANAGER_H_
#define CCONTROLMANAGER_H_

#include"CManagerBase.h"

class CControlManager : public CManagerBase
{
public:
	CControlManager(CFrontManager *fronterManager) : CManagerBase(fronterManager) { hControlWorkThread = NULL; }

	~CControlManager()
	{

	}

	virtual BOOL Start();
	virtual void DealProcedure(LPVOID lparam);
	virtual void WaitForComplete();
	virtual void OnReciveComplete(BYTE *pdata, NET_COMPLETEEVENT &net_complete, unsigned long length);

	//发送http请求消息
	void GetControlInfo();

private:
	static DWORD WINAPI ControlWorkThreadProc(void *lparam);
	DWORD RealWorkerProc(void *lparam);

private:
	HANDLE hControlWorkThread;
};

#endif
#include"CControlManager.h"


BOOL CControlManager::Start()
{
	hControlWorkThread = CreateThread(NULL, 0, ControlWorkThreadProc, this, 0, NULL);
	if (hControlWorkThread == NULL) {
		return FALSE;
	}

	return TRUE;
}

void CControlManager::DealProcedure(LPVOID lparam)
{

}

void CControlManager::WaitForComplete()
{

}

void CControlManager::OnReciveComplete(BYTE *pdata, NET_COMPLETEEVENT &net_complete, unsigned long length)
{
	//在这里处理其相关的字符串

}

void CControlManager::GetControlInfo()
{

}

DWORD WINAPI CControlManager::ControlWorkThreadProc(void *lparam)
{
	CControlManager *controlManager = (CControlManager *)lparam;
	return controlManager->RealWorkerProc(lparam);
}

DWORD CControlManager::RealWorkerProc(void *lparam)
{



	return 0;
}

这里在RealWorkerProc()函数中就可以当成类的普通成员函数来使用了。 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值