而且,下面是一個示例,顯示了一些人之前建議的內容。
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
#include <process.h>
HANDLE g_hMainThread;
void TheThread(void *);
int _tmain(int argc, _TCHAR* argv[])
{
g_hMainThread = OpenThread(THREAD_ALL_ACCESS,
FALSE,
GetCurrentThreadId());
printf("Suspending main thread.\n");
_beginthread(TheThread, 0, NULL);
SuspendThread(g_hMainThread);
printf("Main thread back in action.\n");
return 0;
}
void TheThread(void *)
{
DWORD dwStatus = ResumeThread(g_hMainThread);
DWORD dwErr = GetLastError();
printf("Resumed main thread - Status = 0x%X, GLE = 0x%X.\n",
dwStatus,
dwErr);
}
來源
2010-01-05 18:41:53
Raj
是主線程試圖暫停和恢復自己。當線程暫停並且無法執行ResumeThread調用時,線程如何恢復。 – rerun 2010-01-05 18:22:27
不,它調用SuspendThread本身,但稍後由另一個線程調用ResumeThread。在調試模式下,它顯示線程窗格上的掛起計數,當掛起被調用時它會增加1,但在調用恢復時不會減少一次。 – 2010-01-05 18:25:21
ResumeThread()是否返回負值,如果是,GetLastError()會返回什麼? – 2010-01-05 18:33:09