基于对话框的工程DWORD WINAPI Dlg1thread1(LPVOID lpparameter);
HANDLE hThreadl1;void CTESTONCEDlg::OnBnClickedButton1()
{
hThreadl1=CreateThread(NULL,0,Dlg1thread1,NULL,0,NULL);
}
DWORD WINAPI Dlg1thread1(LPVOID lpParameter)
{
         dosomething();
return 0;
}调试发现进不去Dlg1thread1,请问问题出在哪了?

解决方案 »

  1.   

    什么叫进不去??在线程函数的dosomething();这一行下个断点,然后点按钮Button1,会没反应?
      

  2.   

    断点设了,点了按钮,无法进去Dlg1thread1中的断点
      

  3.   

    那你看看CreateThread的返回值,看看线程创建成功没有!
      

  4.   

    给的信息有点少,你这个是放在对话框程序的哪个类里面的什么地方调用的,而且线程函数设为成员函数不好吗?静态的。在mfc程序中还是建议用_beginthreadex()来创建线程 不建议用createthread
      

  5.   

    我们都不用CreateThread函数的,_beginthreadex函数用的比较多~
      

  6.   

    _beginthreadex在内部调用了CreateThread,在调用之前_beginthreadex做了很多的工作,从而使得它比CreateThread更安全
      

  7.   

    我的线程函数设的全局函数,应该和静态的成员函数一样的。AfxBeginThread,_beginthreadex,CreateThread有什么区别,我的线程函数中没有涉及到MFC,里面都是读取外部设备的数据的代码?这样用CreateThread不行?
      

  8.   

    为什么我在点击按钮下面用  _beginthreadex(0,0,myfunc,0,0,0);编译提示“_beginthreadex找不到标识符”?
      

  9.   

    查看下返回的句柄是否有效
    我试了下你的demo发现如果在第三个参数(线程函数名称)前需要加上运行状态标识可以断点进去,函数为
    HANDLE hThreadHandle = NULL;
    hThreadHandle = CreateThread(
    NULL,
    0,
    (LPTHREAD_START_ROUTINE)Dlg1thread1,
    NULL,
    0,
    NULL);如果不加的话出现以下错误error C2664: 'CreateThread' : cannot convert parameter 3 from 'void (void)' to 'unsigned long (__stdcall *)(void *)AfxBeginThread你可以GO to Definition进去看看,它包括了CreateThread,同时增加了一些变量和函数,返回的是指针,而CreateThread返回的是句柄,_beginthreadex没用过,希望对你有所帮助
      

  10.   

    DWORD WINAPI Dlg1thread1(LPVOID lpParameter)
    把这个WINAPI去掉。
      

  11.   

    _beginthread 需要include process.h
    CREATETHREAD失败请查看返回值
      

  12.   

    失败一般是返回FALSE
    ,另外调GETLASETERROR看看
      

  13.   

    很是怀疑你目前的代码能够编译通过?
    多线程创建当然是使用CreateThread最为妥当。但是你最好仔细查查CreateThread函数的用法,尤其是线程函数指针的传递。
      

  14.   

    从你的返回值看,CreateThread应该是成功了,如果不成功会返回NULL的,你可以这样来测试,在你的 Dlg1thread1中加一句 ::MessageBox(NULL,_T("XXX"),_T("XXXX"),MB_OK);虽然暴加了点,但是可以看到线程函数是否被调用了。
      

  15.   

    环境的差异? 
    我在我的机子上调试了下,搂主的demo是没问题的(VS2008)
    有的时候打断点不一定好用(比如调试钩子程序的时候),建议搂主在回调函数中加入MessageBox试一下