/// <summary> /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// </summary> /// <filterpriority>2</filterpriority> public void Dispose() { if (_disposed) { throw new ObjectDisposedException("Memory mapped file"); } _ptr = null; _mmva.Dispose(); _mmva = null; _mmf.Dispose(); _mmf = null; _disposed = true; }
/// <summary> /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// </summary> /// <filterpriority>2</filterpriority> public void Dispose() { if (_disposed) { throw new ObjectDisposedException("Memory mapped file"); } _ptr = null; _mmva.SafeMemoryMappedViewHandle.ReleasePointer(); _mmva.Dispose(); _mmva = null; _mmf.Dispose(); _mmf = null; _disposed = true; }
public void Dispose() { try { if (ewh_Writer_ReadyToRead != null) { //ewh_Writer_ReadyToRead.Set(); ewh_Writer_ReadyToRead.Close(); ewh_Writer_ReadyToRead.Dispose(); ewh_Writer_ReadyToRead = null; } } catch { } try { if (ewh_Writer_ReadyToWrite != null) { //ewh_Writer_ReadyToWrite.Set(); ewh_Writer_ReadyToWrite.Close(); ewh_Writer_ReadyToWrite.Dispose(); ewh_Writer_ReadyToWrite = null; } } catch { } try { if (ewh_Reader_ReadyToRead != null) { //ewh_Reader_ReadyToRead.Set(); ewh_Reader_ReadyToRead.Close(); ewh_Reader_ReadyToRead.Dispose(); ewh_Reader_ReadyToRead = null; } } catch { } try { if (ewh_Reader_ReadyToWrite != null) { //ewh_Reader_ReadyToWrite.Set(); ewh_Reader_ReadyToWrite.Close(); ewh_Reader_ReadyToWrite.Dispose(); ewh_Reader_ReadyToWrite = null; } } catch {} try { if (Writer_accessor != null) { Writer_accessor.Dispose(); Writer_accessor = null; } } catch {} try { if (Reader_accessor != null) { Reader_accessor.Dispose(); Reader_accessor = null; } } catch { } try { if (Writer_mmf != null) { Writer_mmf.Dispose(); Writer_mmf = null; } } catch { } try { if (Reader_mmf != null) { Reader_mmf.Dispose(); Reader_mmf = null; } } catch { } }
private void Init(MemoryMappedFile file, long offsetBytes, long lengthBytes, MemoryMappedFileAccess access, int defaultSegmentWords, bool leaveOpen = false) { base.Init(defaultSegmentWords); MemoryMappedViewAccessor view = null; byte* ptr = (byte*)0; try { if(lengthBytes < 0) lengthBytes = 0; view = file.CreateViewAccessor(offsetBytes, lengthBytes, access); lengthBytes = view.Capacity; view.SafeMemoryMappedViewHandle.AcquirePointer(ref ptr); this.pointer = (ulong*)&ptr[offsetBytes]; this.view = view; if (!leaveOpen) this.mmFile = file; view = null; this.totalWords = lengthBytes >> 3; } finally { if (view != null) { if (ptr != (byte*)0) view.SafeMemoryMappedViewHandle.ReleasePointer(); view.Dispose(); } } }