Example #1
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(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);
					}
				}
			}
		}
Example #2
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;
		}
Example #3
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);
       }
     }
   }
 }