见代码:
#include <Windows.h>
void WINAPI FunWaitCallBack(PTP_CALLBACK_INSTANCE pInstance, PVOID pvContext, PTP_WAIT pWait, TP_WAIT_RESULT WaitResult)
{
while(1)
{
printf("%d\r\n", WaitResult);
Sleep(1000);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hEvent0 = CreateEvent(NULL, FALSE, FALSE, NULL);
HANDLE hEvent1 = CreateEvent(NULL, FALSE, FALSE, NULL);
int Value = 10;
PTP_WAIT pWait = CreateThreadpoolWait(FunWaitCallBack, &Value, NULL);
// FILETIME fTime;
// fTime.dwHighDateTime = 0;
// fTime.dwLowDateTime = -10000;
SetThreadpoolWait(pWait, hEvent0, NULL);
SetThreadpoolWait(pWait, hEvent1, NULL);
SetEvent(hEvent1);
WaitForThreadpoolWaitCallbacks(pWait, FALSE);
CloseThreadpoolWait(pWait);
CloseHandle(hEvent0);
CloseHandle(hEvent1);
return 0;
}
我认为上述代码的主线程是不会return 的,并且一直输出1,但是实际上回调函数一次都没被调用就直接退出了,求解释
#include <Windows.h>
void WINAPI FunWaitCallBack(PTP_CALLBACK_INSTANCE pInstance, PVOID pvContext, PTP_WAIT pWait, TP_WAIT_RESULT WaitResult)
{
while(1)
{
printf("%d\r\n", WaitResult);
Sleep(1000);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hEvent0 = CreateEvent(NULL, FALSE, FALSE, NULL);
HANDLE hEvent1 = CreateEvent(NULL, FALSE, FALSE, NULL);
int Value = 10;
PTP_WAIT pWait = CreateThreadpoolWait(FunWaitCallBack, &Value, NULL);
// FILETIME fTime;
// fTime.dwHighDateTime = 0;
// fTime.dwLowDateTime = -10000;
SetThreadpoolWait(pWait, hEvent0, NULL);
SetThreadpoolWait(pWait, hEvent1, NULL);
SetEvent(hEvent1);
WaitForThreadpoolWaitCallbacks(pWait, FALSE);
CloseThreadpoolWait(pWait);
CloseHandle(hEvent0);
CloseHandle(hEvent1);
return 0;
}
我认为上述代码的主线程是不会return 的,并且一直输出1,但是实际上回调函数一次都没被调用就直接退出了,求解释