A wrapper for the SevenZipExtractor class that makes using it thread safe.
Inheritance: IDisposable
Example #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;
 }
Example #2
0
 /// <summary>
 /// Starts a read-only transaction.
 /// </summary>
 /// <remarks>
 /// This puts the archive into read-only mode.
 /// </remarks>
 /// <param name="p_futFileUtil">An instance of a <see cref="FileUtil"/> class.</param>
 /// <exception cref="ArgumentNullException">Thrown if <paramref name="p_futFileUtil"/> is <c>null</c>.</exception>
 public void BeginReadOnlyTransaction(FileUtil p_futFileUtil)
 {
     if (m_szeReadOnlyExtractor == null)
     {
         if (p_futFileUtil == null)
         {
             throw new ArgumentNullException("p_futFileUtil");
         }
         m_szeReadOnlyExtractor = GetThreadSafeExtractor(m_strPath);
         if (m_szeReadOnlyExtractor.IsSolid)
         {
             m_szeReadOnlyExtractor.Dispose();
             m_szeReadOnlyExtractor     = null;
             m_strReadOnlyTempDirectory = p_futFileUtil.CreateTempDirectory();
             using (SevenZipExtractor szeExtractor = Archive.GetExtractor(m_strPath))
             {
                 szeExtractor.FileExtractionFinished += new EventHandler <FileInfoEventArgs>(FileExtractionFinished);
                 szeExtractor.ExtractArchive(m_strReadOnlyTempDirectory);
             }
         }
     }
 }
Example #3
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 #4
0
		/// <summary>
		/// Starts a read-only transaction.
		/// </summary>
		/// <remarks>
		/// This puts the archive into read-only mode.
		/// </remarks>
		/// <param name="p_futFileUtil">An instance of a <see cref="FileUtil"/> class.</param>
		/// <exception cref="ArgumentNullException">Thrown if <paramref name="p_futFileUtil"/> is <c>null</c>.</exception>
		public void BeginReadOnlyTransaction(FileUtil p_futFileUtil)
		{
			if (m_szeReadOnlyExtractor == null)
			{
				if (p_futFileUtil == null)
					throw new ArgumentNullException("p_futFileUtil");
				m_szeReadOnlyExtractor = GetThreadSafeExtractor(m_strPath);
				if (m_szeReadOnlyExtractor.IsSolid)
				{
					m_szeReadOnlyExtractor.Dispose();
					m_szeReadOnlyExtractor = null;
					m_strReadOnlyTempDirectory = p_futFileUtil.CreateTempDirectory();
					using (SevenZipExtractor szeExtractor = Archive.GetExtractor(m_strPath))
					{
						szeExtractor.FileExtractionFinished += new EventHandler<FileInfoEventArgs>(FileExtractionFinished);
						szeExtractor.ExtractArchive(m_strReadOnlyTempDirectory);
					}
				}
			}
		}