Filestream.SetLength() "Неверный параметр"

Поэтому я пытаюсь заполнить мультимедийное устройство с приращениями и измерить скорость, и это работает, пока я не начну записывать данные с 75% до 95% (мы не заполняем его полностью)

Когда я иду, чтобы установить длину файла (Пример: я пытаюсь сделать файл 3,1 ГБ, когда на диске доступно 3,72 ГБ, я получаю следующее исключение

"Неверный параметр."

Трассировки стека

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.SeekCore(Int64 offset, SeekOrigin origin)
at System.IO.FileStream.SetLengthCore(Int64 value)
at System.IO.FileStream.SetLength(Int64 value)
at DiskSpeed.Write.WriteFileFromMemory(Byte[] buffer, String path, Int64 fileSize, Int32 currentIteration, Int32 totalIterations, CancellationToken ct)

Вот код

using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 8, FileOptions.WriteThrough | FileFlagNoBuffering))
{
    fs.SetLength(fileSize);
    .......
}

Я использую это для записи фрагментов на съемный носитель с шагом 25%, но после 75% я записываю только 20% фрагментов. Переход от 0-75% работает нормально, это последний кусок, который выдает эту ошибку. Да, я дважды проверил размер файла, ЕСТЬ ПРОСТРАНСТВО!!!

У кого-нибудь есть какие-либо идеи? Я в своем уме и не могу найти что-нибудь в Интернете.

1 ответ

Решение
private const FileOptions FileFlagNoBuffering = (FileOptions)0x20000000;

Это было причиной проблемы. Спасибо Душан!

Другие вопросы по тегам