Exemplo n.º 1
0
        public override void Dispose(ref List <Exception> disposeErrors)
        {
            // Cancel token
            try
            {
                cancelSrc.Cancel();
            }
            catch (Exception e)
            {
                (disposeErrors ?? (disposeErrors = new List <Exception>())).Add(e);
            }

            // Dispose zipArchive
            try
            {
                // Dispose and null zip archive, only once.
                Interlocked.CompareExchange(ref archive, null, archive)?.Dispose();
            }
            catch (Exception e)
            {
                (disposeErrors ?? (disposeErrors = new List <Exception>())).Add(e);
            }

            // Dispose semaphore
            try
            {
                Interlocked.CompareExchange(ref m_lock, null, m_lock)?.Dispose();
            }
            catch (Exception e)
            {
                (disposeErrors ?? (disposeErrors = new List <Exception>())).Add(e);
            }

            belateSource = null;
        }
 public override void Dispose(ref List <Exception> disposeErrors)
 {
     archiveOpener = null;
     belateSource  = null;
 }
 public ArchiveOpenerStreamProvider(Func <IArchive> archiveOpener, IBelatedDisposeList belateSource)
 {
     this.archiveOpener = archiveOpener ?? throw new ArgumentNullException(nameof(archiveOpener));
     this.belateSource  = belateSource;
 }
 public ArchiveStreamProvider(IArchive archive, IBelatedDisposeList belateSource)
 {
     this.archive      = archive;
     this.belateSource = belateSource;
 }
Exemplo n.º 5
0
 /// <summary>
 /// Create opener.
 /// </summary>
 /// <param name="archiveOpener"></param>
 /// <param name="entryName"></param>
 /// <param name="belateSource"></param>
 public StreamOpener(Func <Stream> archiveOpener, string entryName, IBelatedDisposeList belateSource)
 {
     this.streamOpener = archiveOpener ?? throw new ArgumentNullException(nameof(archiveOpener));
     this.entryName    = entryName ?? throw new ArgumentNullException(nameof(entryName));
     this.belateSource = belateSource;
 }