Tag: 异步文件

FileStream.BeginWrite优于FileStream.Write?

我需要对同一个文件进行一批写操作,但是在文件中的不同位置。 我希望以最佳性能实现此目的,因此查看了同步FileStream.Write和异步FileStream.BeginWrite方法。 同步实现很简单,只需在循环中调用FileStream.Write所需的次数即可。 异步版本在循环中调用FileStream.BeginWrite,然后执行WaitHandle.WaitAll以阻止它们全部完成。 令我惊讶的是,这比简单的同步版本慢。 我使用正确的构造函数创建了FileStream,因此我可以请求异步操作,并且还测试了指示False的IAsyncResult.CompletedSynchronous属性,因此它们确实以异步方式运行。 似乎使用Be​​ginWrite的唯一好处是你在写入时不会阻塞你的线程。 除了这个好处之外,使用异步版本还有什么意义吗? 这是我用于播放异步方法的测试代码,可能有一个明显的错误? // Size of a chunk to be written to file var chunk = 1024 * 64; // Number of chunks to write async var reps = 32; // Create new file and set length var fs = new FileStream(@”C:\testfile.dat”, FileMode.Create, FileAccess.ReadWrite, FileShare.None, chunk, true); fs.SetLength(chunk * […]