Cod Rob, потому что нельзя изменять коллекцию по которой в данный момент итерируешься.
Просто сделай такое изменение - сделай 2 переменные:
- currentReadEmails - в ней будут все прочитанные из файла имейлы
- resultEmails - тут будут те, что вернешь
В resultEmails только добавляешь, из currentReadEmails - только читаешь
Cod Rob, тебе надо просто верхнеуровнево нарисовать диаграмму работы программы, чтобы понять. что нужно использовать. тут вообще можно одним локом обойтись
Cod Rob, предлагаю сначала выучить теорию по параллельности, многопоточности и структурах данных для них. вижу многое не понятно пока, а подставлять объекты и думать что все заработает магическим образом - плохая затея
Cod Rob, значит лучше сделать такую реализацию:
1. Весь список файлов делишь между этими 3 потоками
2. Каждый поток синхронно работает с этими файлами - блокировка не нужна
3.1. Для записи в файл результирующий пусть у тебя будет отдельный объект, который через лок это и делает
3.2. Либо это будет отдельный поток, а синхронизация между ними реализована с помощью BlockingCollection
Cod Rob, где его можно добавить? внутри метода все синхронно происходит - никаких гонок нет, а если нужно просто параллельно добавлять записи в список, то лок на объект будет гораздо эффективнее, чем ConcurrentBag
Cod Rob, здесь вообще никакого Concurrency нет.
Во-первых, внутри метода достаточно использовать List
Во-вторых, для ReadEmails и других полей объекта используй обычные List, а когда захочешь их обновлять/читать - просто используй на них lock
Nik Faraday, тогда можно попробовать так:
1. Таблица одна - [page_id, date, visits_count] - id страницы, дата (только дата без времени) посещения, кол-во посещений
2. На каждый заход на страницы вызывается UPDATE SET visits_count += 1 WHERE date = today() AND page_id = id
3. Для годовых/месячных/дневных делаешь материализованное представление
P.S. - т.к. годовые/месячные/дневные больше не обновляются, то можно создать для них отдельную таблицу и хранить уже подсчитанные значения там. Обновлять скриптом по окончании периода.