Разбор методов реализованных в проекте и разьяснение части кода - C#
Формулировка задачи:
Программа предназначенна для чтения файлов логов, больших обьемов, я не сосвсем понимаю как она работает и не могу разобраться с лябда выражениями. Есть конкретные вопросы по кускам кода.
весь проект прикреплен во вложении
и вопрос какими методами реализованно данное приложение ?
Листинг программы
- /// <summary>
- /// Цикл построчного чтения логов
- /// </summary>
- private void ReadLoop(CancellationToken token)
- {
- Task.Factory.StartNew(() =>
- {
- try
- {
- while (!_reader.EndOfStream)
- {
- if (token.IsCancellationRequested)
- {
- return;
- }
- if (_rawLogs.Count >= _logOptions.ReadAmount)
- {
- continue;
- }
- _rawLogs.Add(_reader.ReadLine(), token);
- }
- }
- catch (ObjectDisposedException)
- {
- }
- }, token);
- }
Листинг программы
- /// <summary>
- /// Цикл склеивания записей логов
- /// </summary>
- private void StickLoop(CancellationToken token)
- {
- Task.Factory.StartNew(() =>
- {
- string logEntry = string.Empty;
- while (true)
- {
- try
- {
- if (token.IsCancellationRequested)
- {
- break;
- }
- if (_stuckLogs.Count >= _logOptions.ReadAmount)
- {
- continue;
- }
- string logLine;
- if (!_rawLogs.TryTake(out logLine)) continue;
- if (_logFilter.IsLogHeadLine(logLine))
- {
- _stuckLogs.Add(logEntry, token);
- logEntry = logLine;
- }
- else
- {
- logEntry += $"{Environment.NewLine}{logLine}";
- }
- }
- catch (ObjectDisposedException)
- {
- }
- }
- }, token);
- }
Листинг программы
- public LogFilter(string timeFilter, string typeFilter, string systemFilter)
- {
- _isLogLineRegex = new Regex(LogPattern);//Инициализирует новый экземпляр Regex для указанного регулярного выражения.
- if (timeFilter == null && typeFilter == null && systemFilter == null)
- {
- _isMatchFilter = s => true;
- return;
- }
- if (timeFilter != null && typeFilter == null && systemFilter == null)
- {
- _isMatchFilter = s => s.StartsWith(timeFilter);
- return;
- }
- if (!string.IsNullOrEmpty(typeFilter) && typeFilter.Length > 1)
- {
- _isMatchFilter = s => false;
- return;
- }
- _isMatchFilter = s =>
- {
- var groups = _isLogLineRegex.Match(s).Groups;
- return groups[2].Value.StartsWith(timeFilter ?? string.Empty) &&
- (string.IsNullOrEmpty(typeFilter) || groups[3].Value == typeFilter) &&
- groups[4].Value.StartsWith(systemFilter ?? string.Empty);
- };
- }
Решение задачи: «Разбор методов реализованных в проекте и разьяснение части кода»
textual
Листинг программы
- catch (ObjectDisposedException)
- {
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д