Я работаю над простой веб-службой, которая экспортирует данные из некоторого хранилища данных в базу данных.Сбой при работе с временными окнами из-за нескольких потоков
Услуга проходит каждые 20 секунд (интервал тестирования).
Интервалы реализуются через класс System.Timers.Timer
.
Что происходит на данный момент:
- служба начинает
- Таймер начинает
- 20 секунд проходит и обслуживание начинается экспорт
- Экспорт не закончить в течение следующих 20 секунд, а другой нить запускает попытку сделать тот же экспорт.
- В конечном итоге сбой при обслуживании.
Я собирался обернуть экспорт в отдельный поток, но не уверен, полностью ли это устранит проблему.
Увеличение интервала времени не является вариантом, потому что я не уверен, насколько велика будет будущий экспорт.
Любые предложения приветствуются.
Спасибо
Edit:
Я думаю, что я после: 1. Запуск таймера 2. Начало резьбы 3. Начало экспорта 4. Не позволяйте таймер чтобы начать другой поток до тех пор, пока предыдущий не завершится ...
Почему бы не иметь логическое статическое поле, чтобы отслеживать, работает ли экспорт? (и не запускать новый поток, если он есть) –