Всегда ли должен быть запущен поток "store in the DB"? Похоже, что, возможно, лучшим вариантом (если это возможно) было бы, чтобы поток опроса раскрутил другой поток для сохранения. В зависимости от количества создаваемых потоков, возможно, что использование первого потока опроса использует ThreadPool.QueueUserWorkItem () может быть более эффективным маршрутом.
Для большей эффективности при сохранении в базе данных я бы использовал асинхронный ввод-вывод в БД, а не методы синхронизации.
В любое время вы можете избавиться от необходимости напрямую общаться между двумя потоками. При необходимости собрать вместе несколько примитивов синхронизации, ваш код будет не так легко отладить, и он может привести к некоторым очень тонким условиям гонки, которые приводят к ошибкам типа «один на миллион выполнения» (которые совсем не весело находить / исправлять).
Если второй поток всегда должен выполняться, дайте нам знать, почему с некоторой дополнительной информацией, и мы можем вернуться с более глубоким ответом.
Удачи!