与えられた間隔の後にタイマーを無効にするこの拡張メソッドがあります。GCがdisableTimer変数(このメソッドのローカル変数)を破棄しないという保証はありますか?または、このコードが今から1時間で機能する理由はありますか。
timer.DisableAfter(1.Hours()) :
public static void DisableAfter(this Timer timer, TimeSpan timeSpan)
{
var disableTimer = new Timer(timeSpan.TotalMilliseconds)
{
AutoReset = false,
};
disableTimer.Elapsed += (sender, e) =>
{
timer.Stop();
disableTimer.Stop();
};
disableTimer.Start();
}