/// <summary> /// Starts a read-only transaction. /// </summary> /// <remarks> /// This puts the archive into read-only mode. /// </remarks> public void BeginReadOnlyTransaction() { if (m_szeReadOnlyExtractor == null) { m_szeReadOnlyExtractor = GetThreadSafeExtractor(m_strPath); if (m_szeReadOnlyExtractor.IsSolid) { m_szeReadOnlyExtractor.Dispose(); m_szeReadOnlyExtractor = null; m_strReadOnlyTempDirectory = Program.CreateTempDirectory(); using (SevenZipExtractor szeExtractor = Archive.GetExtractor(m_strPath)) { szeExtractor.FileExtractionFinished += new EventHandler<FileInfoEventArgs>(FileExtractionFinished); szeExtractor.FileExtractionStarted += new EventHandler<FileInfoEventArgs>(FileExtractionStarted); szeExtractor.ExtractArchive(m_strReadOnlyTempDirectory); } } } }
/// <summary> /// Ends a read-only transaction. /// </summary> /// <remarks> /// This takes the archive out of read-only mode, and releases any used resources. /// </remarks> public void EndReadOnlyTransaction() { if (m_szeReadOnlyExtractor != null) m_szeReadOnlyExtractor.Dispose(); m_szeReadOnlyExtractor = null; if (!String.IsNullOrEmpty(m_strReadOnlyTempDirectory)) FileUtil.ForceDelete(m_strReadOnlyTempDirectory); m_strReadOnlyTempDirectory = null; }
/// <summary> /// Starts a read-only transaction. /// </summary> /// <remarks> /// This puts the archive into read-only mode. /// </remarks> public void BeginReadOnlyTransaction() { if (m_szeReadOnlyExtractor == null) { m_szeReadOnlyExtractor = GetThreadSafeExtractor(ArchivePath); if (m_szeReadOnlyExtractor.IsSolid) { m_szeReadOnlyExtractor.Dispose(); m_szeReadOnlyExtractor = null; m_strReadOnlyTempDirectory = Program.CreateTempDirectory(); using (var szeExtractor = GetExtractor(ArchivePath)) { szeExtractor.FileExtractionFinished += FileExtractionFinished; szeExtractor.FileExtractionStarted += FileExtractionStarted; szeExtractor.ExtractArchive(m_strReadOnlyTempDirectory); } } } }