/// <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);
}
}
}
}