Блокировка потоков

Здравствуйте. Не могу понять почему у меня происходит зависание программы

Логика такая:

1) стартуют потоки

2) если нажать клавишу "стоп", то видимая для всех потоков (передаю в них через указатель) переменная становиться TRUE;

3) Потоки видят это, чистят за собой память и делают Return 0;

4)В это время, после установки значения той переменной в TRUE, в обработчике главной программы мы вызываем WaitForMultipleObjects(numThreads,lpH ,TRUE, INFINITE); - ждём пока все потоки не закончат работать и затем выполняем действия дальше.

По идее эта пауза должна быть пока потоки не закончат работу. Но, на деле это не так. Выключал WaitForMultipleObjects и проверял завершает ли работу поток, всё в порядке. Но с включенной строкой WaitForMultipleObjects поток тоже виснит на выполнении. Как такое вообще может быть? Если нужно, то приведу код.

Добавлено через 3 минуты

Пока писал сам понял в чем суть. Мои потоки выводят данные в блоки edit и не могут обратиться к ним, поскольку тот поток висит. Вот и они ждут. Нужно думать как ждать конца потоков не блокируя основную программу.

Добавлено через 2 часа 54 минуты

Может кому нужно будет: Нужно использовать вспомогательный, контролирующий поток.