作了个界面,停止键stop设为关闭所有线程,当程序开始执行后,我想停止所有线程,直接Destory关闭MyDlg,可以关闭,但是我想中途停止所有线程,按停止键stop后,在Destory关闭对话框时,却不能关闭了,停了半天,最后只能强行关闭,是不是因为线程里的函数(大概500ms)还在执行的缘故还是没有执行完毕啊!那么请问我想中途停止该怎么办呢!

解决方案 »

  1.   

    I didn't get you means.
      

  2.   

    有三个线程
    lpProcessFunc(LPVOID lpParameter)
    lpProcessFunc1(LPVOID lpParameter)
    {
        互斥lock;
        do something;(500ms)
        互斥unlock;
    }
    lpProcessFunc2(LPVOID lpParameter)
    {
        互斥lock;
        do something;(500ms)
        互斥unlock;
    }第一个为主线程,控制其它两个线程开始结束,程序进行中启动了三个线程,当我想停止时,stop按钮里设置停止三个线程,结果界面对话框动不了了,只能强行关闭,请问是什么原因,是因为线程还在do something吗?
      

  3.   

    // 强行关闭线程的代码
    #define CLOSE_THREAD_HANDLE(hThread) if (hThread != NULL) \
    { \
    if (WaitForSingleObject(hThread, 0) == WAIT_TIMEOUT) \
    TerminateThread(hThread, 1L); \
    CloseHandle(hThread); \
    hThread = NULL; \
    }