如何使用win32 api暂停正在运行的线程?

时间:2010-04-19 11:44:17

标签: multithreading winapi

这是

  1. 创建处于暂停状态的线程。

    hThrd1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadProc1, (LPVOID)
    &obj1, CREATE_SUSPENDED, &dwFirstThreadID);
    
  2. 在需要时恢复线程

    ResumeThread(hThrd1);
    
  3. 如何暂停此正在运行的线程。我可能会在一段时间后恢复它,但我现在想暂停它。

    我致电

        SuspendThread(hThrd1);
    

    仍然在ThreadProc中的for循环继续运行。现在我该如何避免呢?同时建议我选择任何替代方案。

1 个答案:

答案 0 :(得分:2)

我遇到了问题。最初在WndProc中声明了线程HANDLE hThrd1。因为再次调用WndProc&再次,我在CreateThread期间获得的HANDLE与传递给暂停线程的HANDLE不同。 (这是一个令人尴尬的错误)

现在我已经全球宣布了它。这解决了问题,并按预期工作。