タイマーの経過イベントでタイマー間隔よりも時間がかかるジョブを実行したいのですが、その結果、コードを実行すると、タイマーの間隔がジョブよりも小さいため、タイマーが新しいスレッドを作成して続行します。コードを長期間実行すると、メモリが大量のスレッドによって破損します。
私はこの問題を興味深い方法で解決しました。つまり、次のとおりです。
startListener()
{
Timer timer = new Timer(100);
timer.elapsed += new Elapsed(elapsed_timer);
timer.start();
}
void elapsed_timer()
{
timer.stop();
try
{
//some work that takes lots of time
}
catch()
{
//some work
}
finally
{
timer.stop();
}
}
私の質問は:
このソリューションは、長期間のアプリケーションで問題がありますか、それとも他のより適切なソリューションはありますか?