源代码如下,如果使用注释部分的代码便可以在文件中输出,而直接使用代码则在控制台无任何反应,为什么?#include <stdio.h>
#include <windows.h>
#include <winbase.h>DWORD ThreadFunc(LPDWORD lpdwParam)
{
/*
FILE *f = fopen("test.txt", "wb");
fwrite(lpdwParam, sizeof(LPDWORD), 1, f);
fclose(f);
return 0;
*/
printf("%d", lpdwParam);
return 0;
}int main()
{
DWORD dwThreadId, dwThreadParam = 1;
HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunc, &dwThreadParam, 0, &dwThreadId);
return 0;
}

解决方案 »

  1.   

    应该是线程没有跑到那里程序就退出的原因。改成如下的试试看
    int main()
    {
    DWORD dwThreadId, dwThreadParam = 1;
    HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunc, &dwThreadParam, 0, &dwThreadId);
    WaitForSingleObject(hThread ,WAIT_OBJECT_0);//等待工作线程结束
    CloseHandle(hThread );
    return 0;
    }
      

  2.   

    HANDLE hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunc, &dwThreadParam, 0, &dwThreadId);
    没有进入线程
      

  3.   

    写错了一句,更正一下
    WaitForSingleObject(hThread ,WAIT_OBJECT_0);//等待工作线程结束
    ----------------------------------------------------------------
    正确为WaitForSingleObject(hThread ,INFINITE);
      

  4.   

    正如gohappy_1999(碧水蓝天)所说,是因为程序运行太快了,主程序运行完了,而线程的信息还没有打印出来。
    其实文件中也不一定有信息的,多运行几次就能看到。
      

  5.   

    Jarrylogin(正经事情我不会,歪门邪道样样行)为什么这么说?使用 gohappy_1999(碧水蓝天) 的方法可以啊!另外接着再请教 gohappy_1999(碧水蓝天) 一个问题,如果我想让程序一直运行,比如监听某端口,是不是循环必须写在 main 函数中?
      

  6.   

    请参考win32多线程程序设计 侯捷译,你想要问的问题都可以找到答案