一定の経過時間後に発生するように設定されたタイムアウトを使用しています。その後、コールバックを取得したいと思います。今、私はこれを使ってTimer
、解雇されたときにそれ自体を処分します。
public class Timeouter
{
public void CreateTimeout(int timeout, Action onTimeout)
{
Timer t = null;
t = new Timer(_ =>
{
onTimeout();
t.Dispose();
}, new object(), timeout, Timeout.Infinite);
}
}
このタイマーは非常に頻繁に呼び出される可能性があり、1回だけ起動して自分自身を破棄するように多くのタイマーを設定する可能性があるため、このタイマーのリソース使用について少し心配しています。タイマーがそれであると考えると、IDisposable
それは実際にそのタスクを実行するためにある種の高価なリソースを使用していることを私に示します。
- のリソース使用量について心配しすぎています
Timer
か、それとも解決策はそのままで問題ありませんか? - これを行うための他のオプションはありますか?これらのタイムアウトのいくつかに対応するために、単一のタイマーを使用して、必要に応じてタイマーの開始と停止の頻度を調整する方がよいでしょうか。特定の期間が経過した後にタスクを1回実行する、他の潜在的により軽量なオプションはありますか?