/// <summary> /// Protected implementation of Dispose pattern. /// </summary> /// <param name="disposing"></param> protected override void Dispose(bool disposing) { if (isDisposed || !disposing) { return; } // Close shared memory. // sharedMemoryHandle?.Dispose(); if (CleanupOnClose) { // Unlink shared map. Ignore the errors. // if (sharedMemoryMapName != null) { _ = Native.SharedMemoryUnlink(sharedMemoryMapName); } CleanupOnClose = false; } isDisposed = true; }
/// <summary> /// Create a new shared memory view. /// </summary> /// <param name="sharedMemoryMapName"></param> /// <param name="sharedMemorySize"></param> /// <returns></returns> public static new SharedMemoryMapView CreateNew(string sharedMemoryMapName, ulong sharedMemorySize) { // Try to unlink existing shared memory. // _ = Native.SharedMemoryUnlink(sharedMemoryMapName); // Create shared memory view. // var sharedMemoryMapView = new SharedMemoryMapView( sharedMemoryMapName, sharedMemorySize, Native.OpenFlags.O_CREAT | Native.OpenFlags.O_RDWR | Native.OpenFlags.O_EXCL); return(sharedMemoryMapView); }
/// <summary> /// Protected implementation of Dispose pattern. /// </summary> /// <param name="disposing"></param> protected override void Dispose(bool disposing) { if (disposed) { return; } if (disposing) { // Close shared memory. // sharedMemoryHandle?.Dispose(); // Unlink shared map. Ignore the errors. // _ = Native.SharedMemoryUnlink(sharedMemoryMapName); } disposed = true; }