Thread.Interrupt для остановки долгого сна при выключении приложения - есть ли лучший подход
У меня небольшой фоновый поток, который работает в течение всего времени жизни приложения, однако, когда приложение закрывается, поток должен корректно завершиться.
Проблема в том, что поток запускает некоторый код с интервалом в 15 минут - это означает, что он спит ALOT.
Теперь, чтобы вывести его из спящего режима, я добавляю к нему прерывание - однако мой вопрос, если есть лучший подход к этому, поскольку прерывания генерируют исключение ThreadInterruptedException.
Вот суть моего кода (несколько псевдо):
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)
{
}
}
}