none
使用MemoryMappedFile.CreateFromFile创建的内存映射,如何释放关联的文件? RRS feed

  • 问题

  • 因为需要在大文件中查找数据,所以使用了内存映射关联硬盘文件,第一次执行是没有问题,但是再次执行时就会提示“xxx文件正由另一进程使用,因此该进程无法访问此文件。”

    Dim mmf As MemoryMappedFile = MemoryMappedFile.CreateFromFile(InputFile.FileName, FileMode.Open)

    Dim vstream As MemoryMappedViewStream = mmf.CreateViewStream

    用了mmf.Dispose()也不行。

    请问怎么释放被内存映射占用的文件?

    2015年4月24日 8:03

答案

  • 你好,

    你还需要把内存映射文件视图的流也释放了,这样这个占用的文件才能被完全释放。

    Dim mmf As MemoryMappedFile = MemoryMappedFile.CreateFromFile(InputFile.FileName, FileMode.Open)
            Dim vstream As MemoryMappedViewStream = mmf.CreateViewStream
            mmf.Dispose()
            vstream.Dispose()


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年4月27日 7:58
    版主

全部回复

  • 你好,

    你还需要把内存映射文件视图的流也释放了,这样这个占用的文件才能被完全释放。

    Dim mmf As MemoryMappedFile = MemoryMappedFile.CreateFromFile(InputFile.FileName, FileMode.Open)
            Dim vstream As MemoryMappedViewStream = mmf.CreateViewStream
            mmf.Dispose()
            vstream.Dispose()


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年4月27日 7:58
    版主
  • 谢谢!按照你说的试了一下,果然可以了
    2015年4月28日 1:30