Если вы завершите процесс до завершения нити, все остальные потоки будут прекращены (от ExitProcess):
Выход процесса вызывает следующее:
- Все из потоки в процессе, за исключением вызывающего потока, завершают свое исполнение без , получая уведомление DLL_THREAD_DETACH .
- Состояние всех потоков, завершенных на шаге 1, становится сигналом.
- Функции входной точки для всех загруженных библиотек динамической компоновки (DLL) вызываются с DLL_PROCESS_DETACH.
- После того, как все связанные DLL-файлы выполнили любой код завершения процесса, , функция ExitProcess завершает текущий процесс, включая вызывающий поток .
- Состояние вызывающей нити становится сигналом.
- Все дескрипторы объектов, открытые процессом, закрыты.
- Состояние завершения процесса изменяется с STILL_ACTIVE на на выходное значение процесса.
- Состояние объекта процесса становится сигналом, удовлетворяющим любым потокам, ожидавшим завершения процесса .
Вам нужно будет явно ждать поток исполняющего WriteFile, чтобы закончить, как правило, через WaitForSingleObject(thread handle, ...)
.
Небольшой фрагмент кода будет более информативным ... – Eugene
Ну, если поток прекращается, найдите, где это происходит, и прекратите его прекращать. – GManNickG