一定時間後に破壊するために、Timerクラスに拡張メソッドを作成しました。実際にはtimer.enableフィールドでfalseを設定するだけのようですが、実際にはすべてをfalseに設定するわけではありません。独自の拡張メソッドからオブジェクトを無効にする方法はありますか?
そして別のこと-それをそのように実装するのは良い習慣ですか、それとも同期の問題やより多くの驚きを期待する必要がありますか?
timer.DestroyAfter(1.Hours()):
public static void DestroyAfter(this Timer timer, TimeSpan timeSpan)
{
var killingTimer = new Timer(timeSpan.TotalMilliseconds)
{
AutoReset = false,
};
killingTimer.Elapsed += (sender, e) =>
{
timer.Stop();
**timer = null;** //doesn't seem to work though line is executed
killingTimer.Stop();
killingTimer = null;
};
killingTimer.Start();
}