/// <summary>
        /// Loads the specified files into the archive list.
        /// </summary>
        /// <param name="archiveFiles"></param>
        public override void LoadFiles(IEnumerable <string> archiveFiles)
        {
            if (m_disposed)
            {
                throw new Exception("Object is disposing");
            }

            var loadedFiles = new List <SortedTreeTable <TKey, TValue> >();

            foreach (string file in archiveFiles)
            {
                try
                {
                    SortedTreeFile sortedTreeFile = SortedTreeFile.OpenFile(file, isReadOnly: true);
                    var            table          = sortedTreeFile.OpenTable <TKey, TValue>();
                    if (table == null)
                    {
                        sortedTreeFile.Dispose();
                        //archiveFile.Delete(); //ToDo: Consider the consequences of deleting a file.
                    }
                    else
                    {
                        if (m_listLog.ShouldBeDeleted(table.ArchiveId))
                        {
                            Log.Publish(MessageLevel.Warning, "File being deleted", "The supplied file is being deleted because it was part of a previous rollover that completed but the server crashed before it was properly deleted." + file);
                            table.BaseFile.Delete();
                        }
                        else
                        {
                            loadedFiles.Add(table);
                        }
                    }
                    Log.Publish(MessageLevel.Info, "Loading Files", "Successfully opened: " + file);
                }
                catch (Exception ex)
                {
                    Log.Publish(MessageLevel.Warning, "Loading Files", "Skipping Failed File: " + file, null, ex);
                }
            }

            using (var edit = AcquireEditLock())
            {
                if (m_disposed)
                {
                    loadedFiles.ForEach(x => x.Dispose());
                    throw new Exception("Object is disposing");
                }

                foreach (var file in loadedFiles)
                {
                    try
                    {
                        edit.Add(file);
                    }
                    catch (Exception ex)
                    {
                        Log.Publish(MessageLevel.Warning, "Attaching File", "File already attached: " + file.ArchiveId, file.BaseFile.FilePath, ex);
                        file.BaseFile.Dispose();
                    }
                }
            }
        }