アプリケーションの存続期間中実行される小さなバックグラウンド スレッドがありますが、アプリケーションがシャットダウンされると、スレッドは正常に終了するはずです。
問題は、スレッドが 15 分間隔でコードを実行することです。つまり、かなりスリープ状態になります。
スリープ状態から抜け出すために、割り込みを投げます。ただし、割り込みは 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)
{
}
}
}