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)
{
}
}
}