Это как-то пытается написать до того, как он закончил писать предыдущий кусок и попадал в беспорядок?(кажется маловероятным, но очень странно, что Thread.Sleep
должен ускорить его, и это может объяснить это).Что произойдет, если вы измените код внутри оператора using для блокировки файлового потока, например так?
using (FileStream fs = File.Create(@"c:\testing\test.bin", fileBufferSize, fileOptions))
{
while (fs.Position < fileBufferSize)
{
lock(fs) // this is the bit I have added to try to speed it up
{
random.NextBytes(Buffer);
fs.Write(Buffer, 0, Buffer.Length);
}
}
}
РЕДАКТИРОВАТЬ: я настроил ваш пример кода для включения цикла while, необходимого для того, чтобы он записал файлправильный размер.
Между прочим, когда я запускаю пример кода, он выполняется очень быстро с или без оператора lock
, а добавление спящего режима значительно замедляет его.