/// <summary> /// Создает экземпляр класса /// </summary> /// <param name="logFile">Имя исходного лог-файла</param> public Index(String logFile) { if (String.IsNullOrEmpty(logFile)) throw new ArgumentNullException("logFile"); _recordCount = -1; _logSize = -1; // блокируем совместный доступ к индексу _syncIndexMutex = MutexHelper.CreateSyncIndexMutex(logFile); _syncIndexMutex.WaitMutex(); // формируем имя индексного файла var indexName = String.Format("{0}.index", logFile); // проверяем индекс var validationResult = ValidateIndex(logFile, indexName); if (validationResult.State != IndexState.Valid) // выполняем переиндексацию ReIndex(validationResult, logFile, indexName); // открываем индекс _stream = OpenForReading(indexName); _reader = new BinaryReader(_stream, Encoding.Default); }