/// <summary> /// Releases the unmanaged resources used by the <see cref="SimplifiedFileWriter"/> object and optionally releases the managed resources. /// </summary> /// <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param> protected virtual void Dispose(bool disposing) { if (!m_disposed) { try { // This will be done regardless of whether the object is finalized or disposed. if (disposing) { if (m_subFileStream != null) { m_subFileStream.Dispose(); m_subFileStream = null; } if (m_stream != null) { m_stream.Dispose(); } File.Delete(m_pendingFileName); // This will be done only when the object is disposed by calling Dispose(). } } finally { m_disposed = true; // Prevent duplicate dispose. } } }
private void CloseCurrentFile() { if (m_subFileStream is null) { return; } if (!m_subFileStream.IsDisposed) { throw new Exception("The previous file must be disposed before completing this action"); } m_subFileStream = null; }
/// <summary> /// Creates and Opens a new file on the current file system. /// </summary> /// <returns></returns> public ISupportsBinaryStream CreateFile(SubFileName fileName) { if (m_disposed) { throw new ObjectDisposedException(GetType().FullName); } CloseCurrentFile(); SubFileHeader subFile = m_fileHeaderBlock.CreateNewFile(fileName); subFile.DirectBlock = m_fileHeaderBlock.LastAllocatedBlock + 1; m_subFileStream = new SimplifiedSubFileStream(m_stream, subFile, m_fileHeaderBlock); return(m_subFileStream); }
/// <summary> /// Creates and Opens a new file on the current file system. /// </summary> /// <returns></returns> public ISupportsBinaryStream CreateFile(SubFileName fileName) { if (m_disposed) throw new ObjectDisposedException(GetType().FullName); CloseCurrentFile(); var subFile = m_fileHeaderBlock.CreateNewFile(fileName); subFile.DirectBlock = m_fileHeaderBlock.LastAllocatedBlock + 1; m_subFileStream = new SimplifiedSubFileStream(m_stream, subFile, m_fileHeaderBlock); return m_subFileStream; }
void CloseCurrentFile() { if (m_subFileStream == null) return; if (!m_subFileStream.IsDisposed) throw new Exception("The previous file must be disposed before completing this action"); m_subFileStream = null; }