起线程,注意事项,生命周期
1、
string转成LPVOID
(void*)(str.c_str());
2、
LPVOID转成string
string seq = (char*)pVoid;
string seq = (char* &)pVoid;这个的区别
3、生命周期
//收到交易弹出公告
void TradeMainUI::OnTradePoputBulletin(const string& seq)
{
//启动线程处理以下消息
char *temp = new char[128];
strcpy(temp, seq.c_str());
HANDLE hHandle = CreateThread(NULL, 0, TradePoputBulletinThread, (void*)(temp), 0, NULL);
CloseHandle(hHandle);
}
DWORD WINAPI TradeMainUI::TradePoputBulletinThread(LPVOID pVoid)
{
try
{
string seq = (char*)pVoid;
FTFutureTradeAgent* pAgent = (FTFutureTradeAgent*)((MQTradeRobot*)gPtrRobotQueen)->GetMarketTradeAgent();
TradeBulletin* pTradeBulletin = pAgent->GetTradeBulletinManager()->GetBulletinBySeq(seq);
if(pTradeBulletin != NULL)
{
TCHAR tcTitle[512] = {0};
TCHAR tcContent[1024] = {0};
EncodingHandler::MByteToWChar(pTradeBulletin->GetTitle().c_str(), tcTitle, 512);
EncodingHandler::MByteToWChar(pTradeBulletin->GetContent().c_str(), tcContent, 1024);
MessageBoxEx(NULL, tcContent, tcTitle, MB_OK | MB_TOPMOST, -1);
}
if (pVoid != NULL)
{
delete pVoid;
pVoid = NULL;
}
return 0;
}
catch(RunTimeException & rtex)
{
char cErro[1024] = {0};
sprintf(cErro,"\nTradePoputBulletinThread____%s\n",rtex.what());
OutputDebugStringA(cErro);
//g_WriteLogInfo->WriteWithTime(cErro);
if (pVoid != NULL)
{
delete pVoid;
pVoid = NULL;
}
return 0;
}
catch(...)
{}
{
//pAgent->_TradeObjIdLock.UnLock();
if (pVoid != NULL)
{
delete pVoid;
pVoid = NULL;
}
return 0;
}
}
1、
string转成LPVOID
(void*)(str.c_str());
2、
LPVOID转成string
string seq = (char*)pVoid;
string seq = (char* &)pVoid;这个的区别
3、生命周期