Mei*_*hes 9 c# winapi shared-memory
我需要访问共享内存映射文件(由单独的程序创建和拥有); 为此,我正在使用
_map = MemoryMappedFile.OpenExisting(
"buffer",
MemoryMappedFileRights.ReadWrite,
HandleInheritability.None);
_mapAccessor = _map.CreateViewAccessor(0, 0, MemoryMappedFileAccess.ReadWrite);
Run Code Online (Sandbox Code Playgroud)
当我关闭应用程序时,我会调用dispose:
public void Dispose()
{
if (_mapAccessor != null)
_mapAccessor.Dispose();
if (_map != null)
_map.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
但似乎我在这里做的就是杀掉内存映射文件,因为使用它的另一个程序开始得到受保护的内存故障.
如果我处理_map
它确实会破坏内存映射文件,即使它没有继承所有权?
更新
事实证明,在我发出信号进入空闲模式之后(在处理存储器映射之前),其他程序(不在我的控制之下)正在做顽皮的事情.
使用'MemoryMappedFile.OpenExisting'和'HandleInheritability.None'时,内存映射文件在处理后不会被销毁.
不会,处理通过调用 OpenExisting() 打开的 MemoryMappedFile 不会破坏底层 MMF。
调用 Windows API CreateFileMapping() 的进程控制 MMF 的生命周期,而 OpenExisting() 则调用 OpenFileMapping()。
归档时间: |
|
查看次数: |
1547 次 |
最近记录: |