Thread.Interrupt, aby zatrzymać długi sen przy zamykaniu aplikacji - Czy istnieje lepsze podejście

Mam wątek w tle, który działa przez cały czas życia aplikacji - jednak gdy aplikacja jest zamykana, wątek powinien wyjść z wdziękiem.

Problem polega na tym, że wątek uruchamia jakiś kod w odstępie 15 minut - co oznacza, że ​​śpi ALOT.

Teraz, aby wyprowadzić go ze stanu uśpienia, rzucam na niego przerwanie - moje pytanie brzmi jednak, czy istnieje lepsze podejście do tego, ponieważ przerwania generują wyjątek ThreadInterruptedException.

Oto istota mojego kodu (nieco pseudo):

public class BackgroundUpdater : IDisposable
{
    private Thread myThread;
    private const int intervalTime = 900000; // 15 minutes
    public void Dispose()
    {
        myThread.Interrupt();
    }

    public void Start()
    {
        myThread = new Thread(ThreadedWork);
        myThread.IsBackground = true; // To ensure against app waiting for thread to exit
        myThread.Priority = ThreadPriority.BelowNormal;
        myThread.Start();
    }

    private void ThreadedWork()
    {
        try
        {
            while (true)
            {
                Thread.Sleep(900000); // 15 minutes
                DoWork();
            }
        }
        catch (ThreadInterruptedException)
        {
        }
    }
}

questionAnswers(5)

yourAnswerToTheQuestion