示例#1
0
 public void Dispose()
 {
     if (m_current != null)
     {
         m_current.DisposeTempFile();
         m_current = null;
     }
 }
示例#2
0
            public bool MoveNext()
            {
                if (m_current != null)
                {
                    m_current.DisposeTempFile();
                    m_current = null;
                }

                if (m_index >= m_volumes.Count)
                {
                    return(false);
                }

                if (m_handle == null)
                {
                    m_handle = m_backend.GetAsync(m_volumes[m_index].Name, m_volumes[m_index].Size, m_volumes[m_index].Hash);
                }

                string hash = null;
                long   size = -1;

                Library.Utility.TempFile file = null;
                Exception exception           = null;

                try
                {
                    file = m_handle.Wait(out hash, out size);
                }
                catch (Exception ex)
                {
                    Logging.Log.WriteErrorMessage(LOGTAG, "FailedToRetrieveFile", ex, "Failed to retrieve file {0}", m_volumes[m_index].Name);
                    exception = ex;
                }

                m_current = new AsyncDownloadedFile(m_volumes[m_index].Name, hash, size, file, exception);
                m_handle  = null;

                m_index++;
                if (m_index < m_volumes.Count)
                {
                    m_handle = m_backend.GetAsync(m_volumes[m_index].Name, m_volumes[m_index].Size, m_volumes[m_index].Hash);
                }

                return(true);
            }