void CDomainG::OnTimer(UINT nIDEvent)
{
LPMYDEFSTRANDHANDLE lpMyDefStrAndHandle=new MYDEFSTRANDHANDLE; //分配
lpMyDefStrAndHandle->glTagMsg=new MyDefStr[DomainName_c]; //分配
lpMyDefStrAndHandle->phThreads=new HANDLE[DomainName_c]; //分配
// TODO: Add your message handler code here and/or call default
CEdit *CEXECUTE_TIME=(CEdit*)GetDlgItem(IDC_EDIT_EXECUTE_TIME);
CTime time=CTime::GetCurrentTime();
CEXECUTE_TIME->SetWindowText(time.Format("%Y-%m-%d %H:%M:%S"));
if(theApp.m_CONDITIONS=="现在执行")
{
if(thDomain=="1"){
thDomain="0";
for(int i=0;i <DomainName_c;i++){
lpMyDefStrAndHandle->glTagMsg[i].pDlg=this;
lpMyDefStrAndHandle->glTagMsg[i].DomainName_c_i=i;
CWinThread* pThread =AfxBeginThread(MyThread,(LPVOID)&lpMyDefStrAndHandle->glTagMsg[i],THREAD_PRIORITY_IDLE);
lpMyDefStrAndHandle->phThreads[i]=pThread->m_hThread;
}
AfxBeginThread(DoDeleteThread,(LPVOID)lpMyDefStrAndHandle,THREAD_PRIORITY_IDLE);//创建一个专门用来释放空间的线程
}
else{
delete [] lpMyDefStrAndHandle->glTagMsg; //释放
delete [] lpMyDefStrAndHandle->phThreads; //释放
delete lpMyDefStrAndHandle; //释放
}
}else{
if(thDomain=="1"&&time.Format("%H:%M:%S")>theApp.m_starttime&&time.Format("%H:%M:%S") <theApp.m_overtime){
for(int i=0;i<DomainName_c;i++){
lpMyDefStrAndHandle->glTagMsg[i].pDlg=this;
lpMyDefStrAndHandle->glTagMsg[i].DomainName_c_i=i;
CWinThread* pThread = AfxBeginThread(MyThread,(LPVOID)&lpMyDefStrAndHandle->glTagMsg[i],THREAD_PRIORITY_IDLE);
lpMyDefStrAndHandle->phThreads[i]=pThread->m_hThread;
}
AfxBeginThread(DoDeleteThread,(LPVOID)lpMyDefStrAndHandle,THREAD_PRIORITY_IDLE);
if(Domain_starti<DomainName_c){
Domain_starti=Domain_starti+10;
}else{
Domain_starti=0;
}
if((Domain_starti+10)<DomainName_c){
Domain_endi=Domain_starti+10;
}else{
Domain_endi=DomainName_c;
}
}
else{
delete [] lpMyDefStrAndHandle->glTagMsg;
delete [] lpMyDefStrAndHandle->phThreads;
delete lpMyDefStrAndHandle;
}
}
CDialog::OnTimer(nIDEvent);
}
UINT CDomainG::DoDeleteThread( LPVOID pParam)
{
LPMYDEFSTRANDHANDLE lpMyDefStrAndHandle=(LPMYDEFSTRANDHANDLE)pParam;
WaitForMultipleObjects(lpMyDefStrAndHandle->glTagMsg->pDlg->DomainName_c,lpMyDefStrAndHandle->phThreads,true,INFINITE); //守候OnTimer中创建的所有线程结束
delete [] lpMyDefStrAndHandle->glTagMsg;
delete [] lpMyDefStrAndHandle->phThreads;
delete lpMyDefStrAndHandle;
return 0;
}