I'm currently creating a web app using ASP.net that tracks a number of tasks that all have a due date stored in a SQL database.

My goal is to have the server notify the user when the due date has passed, whether it's via email, on the browser interface, or via other means of communication.

There will potentially be thousands of tasks that can be due at any time, so I think that polling is inefficient.

What is the "correct" or "best" way to achieve this using C#? A general explanation of the process would be great.