执行到CreateThread时总是报错,不知为何?分不多,帮帮忙。HANDLE   m_HThread;DWORD _stdcall TGGCommunication::CommThread(LPVOID pParam)
{
  // code
}BOOL TGGCommunication::StartMonitoring()
{
    DWORD lpThreadId;
    DWORD dwParam=1;    m_HThread = CreateThread(NULL,
                            0,
                            CommThread,
                            &dwParam,
                            0,
                            &lpThreadId);}

解决方案 »

  1.   

    DWORD _stdcall TGGCommunication::CommThread(LPVOID pParam)
    {
      // code
    }
    改为:
    DWORD WINAPI CommThread(LPVOID pParam)
    {
    }
      

  2.   

    dwParam作为参数没有好好利用,可以:
    DWORD WINAPI CommThread(LPVOID pParam)
    {
        TGGCommunication *pThis = (TGGCommunication *)pParam;    return 0;
    }BOOL TGGCommunication::StartMonitoring()
    {
        DWORD lpThreadId;
        DWORD dwParam=1;    m_HThread = CreateThread(NULL,
                                0,
                                CommThread,
                                (LPVOID)this,
                                0,
                                &lpThreadId);}
      

  3.   

    可是,我在定义CommThread时,已经声明了static的:static DWORD _stdcall CommThread(LPVOID pParam);还是不行啊!
      

  4.   

    dwParam换成(LPVOID)this,还是不行啊!急!!!
      

  5.   

    AFX_MANAGE_STATE( AfxGetStaticModuleState() );////////////
    什么错误?
      

  6.   

    错误如下:
    "0x01542548"指令引用的"0x01542548"内存,该内存不能为"read".
      

  7.   

    CSDN中的都是些什么水平?
    DLL中根本不能创建线程!!!
      

  8.   

    DWORD dwParam=1;
    这个是在栈上分配的,当线程函数传当然有问题了.
    你换成DWORD pdwParam = new DWORD(1);再试.
      

  9.   

    你用AfxCreateThread()试试
    我做过,DLL中可以开线程的
      

  10.   

    DLL中当然可以创建线程,我的大部分多线程控制都是在DLL中创建的建议在CreateThread之后调用HRESULT hr = ::GetLastError();
    在根据错误值判断原因。另外有可能是权限不足的原因
      

  11.   

    >>>> CSDN中的都是些什么水平?
    >>>> DLL中根本不能创建线程!!!呵呵呵,滔滔江水....