예제 #1
0
 /// <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;
 }
예제 #2
0
 /// <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);
             }
         }
     }
 }