出现Runtime Error错误??怪
错误窗口如下:
标题 microsoft visual c++ Runtime library
提示:
Runtime Error
program:D:\sjjh\new\HXLOCK.exe
abnormal program termination
确定
现在我知道是
////注意2
AfxEndThread(0,1); 行出了问题
可是为什么在////注意1中用就没有问题,在////注意2中用就有问题??
我只是想结束这个进程呀。。
我的程序的寝始化启用了一个线程。。
m_Channels[i].m_pCThread=AfxBeginThread(LtoC,LPVOID(i),THREAD_PRIORITY_NORMAL);
在线程LtoC代码如下:
UINT LtoC(LPVOID pParam)
{
.
.
.
newjxh=0;
int BufLen ;
int times=0;
do
{
。
。
。
pMainDlg->m_Channels[chno].DisplayStatus("呼叫ID:"+CString(pMainDlg->m_Channels[chno].Calling));
if ( pMainDlg->m_Channels[chno].GetBoxdata( ) )
{
pMainDlg->m_Channels[chno].m_Application = APPBOXADM;
CString callstr;
callstr.Format("交接箱[%s]呼叫",pMainDlg->m_Channels[chno].m_bid);
EventDisplay(callstr);
} else
{
if ( pMainDlg->m_Channels[chno].GetJFdata( ) )
{
pMainDlg->m_Channels[chno].m_Application = APPJFDADM;
CString callstr;
callstr.Format("机房[%s]呼叫",pMainDlg->m_Channels[chno].m_jfid);
EventDisplay(callstr);
}
else
{
if ( pMainDlg->m_Channels[chno].GetJxhdata( ) )
{
pMainDlg->m_Channels[chno].m_Application = APPJXHADM;
Sleep(1000);
CString callstr;
callstr.Format("接线盒[%s]呼叫",pMainDlg->m_Channels[chno].m_hid);
EventDisplay(callstr);
}
else
{
if(newjxh)
{
Sleep(1000);
EventDisplay(_T("接收完毕:此接线盒尚未启用,请使用OMT将新装的接线盒电子锁启用!!!"));
}
else
{
EventDisplay(_T("找不到与来自"+CString(pMainDlg->m_Channels[chno].Calling)+"的呼叫相对应的纪录"));
}
pMainDlg->m_Channels[chno].Release();
AfxEndThread(0,1); /////注意1
}
}
}
//计算密码
CString SPwd;
SPwd.Format("%scccccccc",SysPwd);
SPwd=SPwd.Mid(0,8);
下面
do
{
memset(pMainDlg->m_Channels[chno].pwd,0x00,16);
for(BufLen=0;BufLen<16;BufLen++)
{
char DTMF=HX_GetMID(chno);
pMainDlg->m_Channels[chno].pwd[BufLen]=DtmfToHex(DTMF);
//把收到的字符转成正序
if(!DTMF)
{
pMainDlg->m_Channels[chno].DisplayStatus("超时错误");
info.Format("通道%d任务因出现超时错误而释放,可能有数据丢失,请排除错误后再试",chno+1);
EventDisplay(info);
pMainDlg->m_Channels[chno].Release();
return 0;
}
pMainDlg->m_Channels[chno].DisplayStatus(pMainDlg->m_Channels[chno].pwd);
Sleep(30);
}
pMainDlg->m_Channels[chno].pwds.Format("%s",pMainDlg->m_Channels[chno].pwd);
pMainDlg->m_Channels[chno].DisplayStatus("进行密码验证");
if (pMainDlg->m_Channels[chno].PwdCom(pMainDlg->m_Channels[chno].pwds)=="fd011848" )//
{
pMainDlg->m_Channels[chno].DisplayStatus("密码验证通过1");
pMainDlg->m_Channels[chno].pwdnum=1;
HX_Dial(chno,",1");
}
else
if (pMainDlg->m_Channels[chno].PwdCom(pMainDlg->m_Channels[chno].pwds)==SPwd)
{
pMainDlg->m_Channels[chno].DisplayStatus("进行密码通过2");
pMainDlg->m_Channels[chno].pwdnum=2;
HX_Dial(chno,",1");
}
else
{
pMainDlg->m_Channels[chno].DisplayStatus("密码验证失败");
HX_Dial(chno,",0");
times++;
if (times==3)
{
pMainDlg->m_Channels[chno].Release();
//AfxEndThread(0,1); ////注意2
return 0;
}
}
}while (pMainDlg->m_Channels[chno].pwdnum==0&×<3);
.
.
.
HX_DisposeRequest(chno); //调用上行函数
pMainDlg->m_Channels[chno].Release();
return 1;
}
在上面的代码中“///注意1”中用没有问题,可是我在“////注意2”中用就出现了Runtime Error的错误??