好吧,多亏了你的评论,我才得以让这个工作起来。这是用于使用二进制编写器/读取器的代码。
Sub createMMF()
Dim mmf As MemoryMappedFile = MemoryMappedFile.CreateNew("testmap", 11)
Dim stream As MemoryMappedViewStream = mmf.CreateViewStream()
Dim writer As BinaryWriter = New BinaryWriter(stream)
writer.Write("hello there")
End Sub
Sub readMMF()
Dim mmf As MemoryMappedFile = MemoryMappedFile.OpenExisting("testmap")
Dim stream As MemoryMappedViewStream = mmf.CreateViewStream()
Dim binaryReader = New BinaryReader(stream)
Dim length = binaryReader.Read() 'gives 11, length of "hello there" string.
Dim text = binaryReader.ReadChars(length)
Debug.Print(text)
End Sub
另外,我使用StreamReader/Writer对进行了测试。我不得不在writer中使用一个.flush()调用,ReadToEnd方法仍然有很多空字符填充。
Sub createMMF()
Dim mmf As MemoryMappedFile = MemoryMappedFile.CreateNew("testmap", 11)
Dim stream As MemoryMappedViewStream = mmf.CreateViewStream()
Dim writer As StreamWriter = New StreamWriter(stream)
writer.Write("hello there")
writer.Flush()
End Sub
Sub readMMF()
Dim mmf As MemoryMappedFile = MemoryMappedFile.OpenExisting("testmap")
Dim stream As MemoryMappedViewStream = mmf.CreateViewStream()
Dim streamReader = New StreamReader(stream)
Dim text = streamReader.ReadToEnd()
Debug.Print(text)
End Sub
检查结果可以看到vbNull字符。