示例#1
0
        public void Test()
        {
            var filePath = Path.GetTempFileName();

            var mmf    = MemoryMappedFile.CreateFromFile(filePath, FileMode.OpenOrCreate, null, Sizes.Size1Kb);
            var stream = new FakeStream(
                (dataOffset, dataSize, buffer, offset, count) => {
                // ReSharper disable once AccessToDisposedClosure
                using (var reader = mmf.CreateViewStream(dataOffset, dataSize, MemoryMappedFileAccess.Read)) {
                    return(reader.Read(buffer, offset, count));
                }
            },
                100,
                23);

            var bytes = new byte[10];
            var read  = stream.Read(bytes, 0, 10);

            Assert.AreEqual(10, read);
            read = stream.Read(bytes, 0, 10);
            Assert.AreEqual(10, read);
            read = stream.Read(bytes, 0, 10);
            Assert.AreEqual(3, read);
            read = stream.Read(bytes, 0, 10);
            Assert.AreEqual(0, read);

            mmf.Dispose();
            File.Delete(filePath);
        }