::AfxBeginThread(THREAD_TestDBConn,(LPVOID)this,THREAD_PRIORITY_NORMAL);
我用这局话调用 THREAD_TestDBConn 
编译不错
但是我打开窗口都要报  abnormal program termination 的错误 为什么呢?

解决方案 »

  1.   

    那问题出在你的THREAD_TestDBConn,它的代码?
      

  2.   

    代码是这样的
    UINT THREAD_TestDBConn(LPVOID pParam)
    {
    CCmppDlg* pPrj=(CCmppDlg *)pParam;
    _variant_t RecordsAffected;
    _bstr_t t = "select NULL";//用于测试数据库的连接是否正常
    while(1)
    {
    if(!pPrj->m_IsSysRun) //尚未运行
    {
    Sleep(1000);
    continue;
    }
    try
    {
    pPrj->m_pConn->Execute("select NULL",&RecordsAffected,adCmdText);
    }
    catch(_com_error e)
    {
    if(pPrj->m_pConn)//首次检测到数据库断开连接
    {
    pPrj->AddSysListMsg("****** 系统信息 ****** 数据库断开连接 ******");
    pPrj->m_bDBConnection = false;
    pPrj->AddSysListMsg("系统提示>>数据库断开连接,拒绝提供部分服务,并且尝试重连数据库...");
    }
    //尝试重连数据库
    pPrj->m_pConn->Open("Provider=SQLOLEDB;Password=sa;User ID=sa;Initial Catalog=SC;Data Source=HX-INZAGHI","","",adOpenUnspecified);
    Sleep(60000);//睡眠10000ms
    continue;
    }
    Sleep(100000);//睡眠60000ms
    }
    return 0;
    }
      

  3.   

    你调用::AfxBeginThread(THREAD_TestDBConn,(LPVOID)this,THREAD_PRIORITY_NORMAL);
    的窗口的类名是CCmppDlg* pPrj=(CCmppDlg *)pParam;中的CCmppDlg吗?
    我试了一下都可以啊,没错的,可能是你调用AfxBeginThread的窗口类不是CCmppDlg