Thread.Interromper para parar o sono longo no desligamento de aplicativos - Existe uma abordagem melhor

Eu estou tendo um pequeno segmento de plano de fundo que é executado para o tempo de vida de aplicativos - no entanto, quando o aplicativo está desligado, o thread deve sair normalmente.

O problema é que o encadeamento executa algum código em um intervalo de 15 minutos - o que significa que ele dorme ALOT.

Agora, a fim de tirá-lo do sono, eu interrompo uma interrupção - minha pergunta é, no entanto, se há uma abordagem melhor para isso, já que as interrupções geram ThreadInterruptedException.

Aqui está a essência do meu código (um pouco 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