1

所以我试图以增量方式填充媒体设备并测量速度,直到我将数据从 75% 写入 95% (我们没有完全填充它)

当我去设置文件长度时(例如:当磁盘有 3.72 GB 可用时,我试图制作一个 3.1GB 的文件,我得到以下异常

“参数不正确。”

堆栈跟踪

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% 可以正常工作,这是引发此错误的最后一个块。是的,我已经仔细检查了文件大小,还有空间!!!

有没有人有任何想法?我不知所措,我似乎无法在网上找到任何东西。

4

1 回答 1

1
private const FileOptions FileFlagNoBuffering = (FileOptions)0x20000000;

这导致了这个问题。谢谢杜桑!

于 2015-03-24T14:32:44.083 回答