Я думаю, что требование недостаточно общего назначения, и код для его достижения невелик, поэтому лично я считаю, что нет необходимости создавать отдельный класс. По крайней мере, если содержащий класс не слишком длинный и сложный. Однако это более или менее дело вкуса.
Чтобы достичь того, чего вы хотите, должно быть достаточно использовать класс Timer
и на каждом таймере таймера перечислять коллекцию, вставляя элементы в базу данных и удаляя их из коллекции одновременно. GetEnumerator в ConcurrentBag
работает со снимком данных, поэтому при перечислении можно безопасно удалять элементы.