Чтобы выяснить, что приводит к зависанию вашей системы, сначала нужно перейти к зависанию Windows. Что делала Windows, пока вы испытывали зависание?
Чтобы узнать это, вы можете сделать дамп ядра. Как получить и проанализировать дамп ядра, прочитайте здесь .
В зависимости от результатов, которые вы получите, вам нужно решить, есть ли что-то под вашим контролем, что вы можете сделать. Так как вы используете стороннюю библиотеку для записи, вы можете мало что сделать, кроме как установить IO priority , приоритет потока на уровне потока или процесса. Если в библиотеке вам были даны ссылки на конкретную ЭЛТ, вы можете попытаться создать свою собственную настроенную версию, например: очищать после каждой записи, чтобы предотвратить объединение записи операционной системой для записи только данных большими блоками обратно на диск.
Edit1
Лучше всего было бы очищать устройство после каждой записи . Это может заставить ОС сбрасывать любые ожидающие данные и записывать текущие ожидающие записи на диск, не кэшируя записи до определенного количества.
Вторым лучшим вариантом будет просто ждать после каждой записи , чтобы дать ОС возможность записать ожидающие изменения, хотя и небольшие, на диск после определенного интервала времени.
Если вы более глубоки в производительности, вы должны попробовать XPerf , который имеет приятный графический интерфейс и показывает вам даже стек вызовов, где ваш процесс зависал. Команда Windows и многие другие команды MS используют этот инструмент для устранения неполадок зависания опыт . Последний выпуск с множеством других функций поставляется с Windows 8 SDK . Но учтите, что Xperf работает только на ОС> Vista.