I want to develop an application that manages tasks that have been assigned either by a user or by the core logic itself, but these tasks are not going to be invoke immediately (maybe even a year later).

So, these tasks need to be stored in a database somehow. I want something that acts as a scheduler (like [TaskScheduler](https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks.taskscheduler?view=net-6.0#Stealing)) that manages tasks, but also interacts with database simultaneously.

I appreciate anyone to point me in the right direction by name some design pattern to implement this by myself or a library that is been written for this exact purpose.