我已經創建了用C在windows線程:停止線程窗口
hookThreadHandle = CreateThread(NULL, 0, lpStartAddress, NULL, 0, &hookThreadId);
我已經創建了用C在windows線程:停止線程窗口
hookThreadHandle = CreateThread(NULL, 0, lpStartAddress, NULL, 0, &hookThreadId);
使用TerminateThread
功能。
您發佈的功能作用:
PostThreadMessage(hookThreadId, WM_QUIT, (WPARAM) NULL, (LPARAM) NULL);
WaitForSingleObject(hookThreadHandle, 5000);
所以它發送一個退出消息給該線程,然後等待它關閉。
[function here](http://code.google.com/p/jnativehook/source/browse/trunk/src/native/windows/NativeThread.c#554)如何停止本機線程? –
@ program-o-steve查看編輯後。 –
2種方法有什麼區別? –
如果你想關閉線程可以使用TerminateThread(),如果你希望只暫停它,你可以使用SuspendThread()(恢復其使用ResumeThread())
請注意,TerminateThread可能會泄漏內存並離開共享數據和同步對象處於不一致或未定義的狀態。 TerminateThread和SuspendThread都會導致死鎖。除非出現非常緊急的原因,否則你確實不想使用這些函數。 – Damon
你應該指定你想要的東西(這裏沒有真正的問題,是不是?),因爲「停止」一個線程可能指的是_suspending_它和_terminating_(Luchian Grigore在後面的答案中假設後者)。目前還不清楚你想在什麼情況下做到這一點。除非有充分的理由,否則終止或暫停線程並不是您通常要做的事情。通常,當你不想讓線程完成工作並在線程的入口函數返回時,阻止或休眠。其他一切都是不愉快和冒險的。 – Damon
有什麼問題嗎?我會投票結束。 – harper