C++ GetExitCodeThread()获取的值错误

C++ GetExitCodeThread()获取的值错误,c++,windows,return-value,waitforsingleobject,createthread,C++,Windows,Return Value,Waitforsingleobject,Createthread,我已经使用带有有效参数的CreateThread创建了一个线程。基于一个简单的if-else条件,我返回DWORD类型的变量,该变量设置为1 hXYZHandles[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ProcessSomething, &input, 0, &dThreadIDs[0]); 然后内部函数: DWORD ProcessSomething(LPVOID) { if(some conditio

我已经使用带有有效参数的CreateThread创建了一个线程。基于一个简单的if-else条件,我返回DWORD类型的变量,该变量设置为1

hXYZHandles[0] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ProcessSomething, &input, 0, &dThreadIDs[0]);
然后内部函数:

DWORD ProcessSomething(LPVOID)
{
    if(some condition)
        return 0;
    else if(some other condition)
        return 1;
}
我无限地等待着一个物体。然后调用函数GetExitCodeThread

我得到不同的值,无论我做什么都不会改变。总是6点


我还不知道是应该使用WaitForSingleObject和GetExitCodeThread,还是应该只使用其中一个。MSDN中没有提到这两种材料是相互替代的。但我只是想,当WaitForSingleObject成功时,图片中的线程句柄可能会被释放,或者在最坏的情况下可能会被分配给不同的线程。然后GetExitCodeThread将失败得很惨。

您能发布一些代码以便更容易地看到发生了什么吗?我们添加了一个小的codeDelete LPTHREAD\u START\u例程,这次不要忽略您得到的编译错误。很抱歉,您是否建议我应该将START例程作为静态成员函数?我已经有了。我是根据以下链接发表此声明的:各位成员。。。。。。。实际上,这个函数会被调用。。我可以调试ITI如果两个条件都不是真的,那么线程函数将返回一个未指定的值。
WaitForSingleObject(hXYZHandles[0], INFINITE);
BOOL isThisCallSuccessful = GetExitCodeThread(hXYZHandles[0], &dReturnValue[0]);
if (! isThisCallSuccessful)
{
    // err
}