Похоже, что вы достигли предела фрагментации файла. Другими словами, каждый сброс создает новый экстент (фрагмент) файла, и файловая система с трудом находит место для отслеживания списка фрагментов. Это объясняет, почему копирование файла помогает - он создает новый файл с меньшим количеством фрагментов.
Другая вещь, которая, вероятно, сработает, - это дефрагментация файла (используя утилиту Sysinternals contig
, вы можете сделать это, пока она используется). Вы также можете использовать contig
, чтобы указать количество фрагментов в файле. Я предполагаю, что это порядка миллиона.
Если вам приходится часто сбрасывать файл и вы не можете выполнить его дефрагментацию, вы можете просто создать файл достаточно большого размера (чтобы выделить место сразу), а затем записать в последовательные байты файл вместо добавления.
Если вы храбры (и у вашего процесса есть права администратора), вы можете самостоятельно дефрагментировать файл с помощью нескольких вызовов API: http://msdn.microsoft.com/en-us/library/aa363911(v=VS.85).aspx