void CDomainG::OnTimer(UINT nIDEvent)
{
MyDefStr glTagMsg[100000];
// 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++){
Domain_i++;
glTagMsg[i].pDlg=this;
glTagMsg[i].DomainName_c_i=i;
CWinThread* pThread = AfxBeginThread(MyThread,&glTagMsg[i],THREAD_PRIORITY_IDLE);
// pThread->ResumeThread();
}
}
}else{
if(thDomain=="1"&&time.Format("%H:%M:%S")>theApp.m_starttime&&time.Format("%H:%M:%S")<theApp.m_overtime){
// thDomain="0";
for(int i=0;i<=DomainName_c;i++){
Domain_i++;
glTagMsg[i].pDlg=this;
glTagMsg[i].DomainName_c_i=i;
CWinThread* pThread = AfxBeginThread(MyThread,&glTagMsg[i],THREAD_PRIORITY_IDLE);
//pThread->ResumeThread();
}
}
}
CDialog::OnTimer(nIDEvent);
}运行时间过长的个话会出错.什么解决.但如果是直接关闭窗口什么让这些现成关闭掉
{
MyDefStr glTagMsg[100000];
// 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++){
Domain_i++;
glTagMsg[i].pDlg=this;
glTagMsg[i].DomainName_c_i=i;
CWinThread* pThread = AfxBeginThread(MyThread,&glTagMsg[i],THREAD_PRIORITY_IDLE);
// pThread->ResumeThread();
}
}
}else{
if(thDomain=="1"&&time.Format("%H:%M:%S")>theApp.m_starttime&&time.Format("%H:%M:%S")<theApp.m_overtime){
// thDomain="0";
for(int i=0;i<=DomainName_c;i++){
Domain_i++;
glTagMsg[i].pDlg=this;
glTagMsg[i].DomainName_c_i=i;
CWinThread* pThread = AfxBeginThread(MyThread,&glTagMsg[i],THREAD_PRIORITY_IDLE);
//pThread->ResumeThread();
}
}
}
CDialog::OnTimer(nIDEvent);
}运行时间过长的个话会出错.什么解决.但如果是直接关闭窗口什么让这些现成关闭掉
将pThread做成全局或者类成员,每次新开线程前判断pThread是否为NULL,否则关闭线程释放再开
还有,pThread得在某个地方释放
MyDefStr glTagMsg[100000]; 他是个局部变量,当执行完OnTimer(UINT nIDEvent),它就失效了。如果此时你的线程再使用glTagMsg肯定出问题。根据需要,把它定义成类成员变量或全局变量。