线程一:
int iTry = 5;
BOOL bRet = FALSE;
while (iTry)
{
//kill samfirme;
SetProcessClose(L"SamFirm");
MyRunCmd mrc;
mrc.Run(path);
unsigned int tid;
g_ReadThread = (HANDLE)_beginthreadex(NULL, 0, CMDGetDataThread, &mrc, 0, &tid);
int iLast = -1;
while (1) //拿到请求后返回数据 这里循环判断CMDGetDataThread是否出现错误
{
Sleep(6000);
if (iLast == g_iFlag)
{
g_iFlag = 0;
iTry--;
TerminateThread(g_ReadThread, 0);
CloseHandle(g_ReadThread);
g_ReadThread = INVALID_HANDLE_VALUE;
g_XdySimpleLog.LogLess(" ERROR : SamFirm CMD Restart the number : %d", iTry);
pMainFrame->call_function("GetDownloadData", 3007, iTry);
break;
}
iLast = g_iFlag;
}
Sleep(2000);
}
线程二:
unsigned __stdcall CMDGetDataThread(LPVOID lpParam)
{
MyRunCmd* pmrc = (MyRunCmd*)lpParam;
CString path = NULL;
int ret;
MainFrame* pMainFrame = (MainFrame*)g_MainFrame;
g_iFlag = 0;
while (1) //拿到请求后返回数据
{
g_iFlag++;
pmrc->ReadFromPipe(path, 1000);
TRACE(path);
return 0;
}