Si consideri il seguente metodo:Devo arrestare il cronometro se il metodo di inclusione sta per ritornare?
DoTimeIntensiveOperation()
{
var t = new Stopwatch();
foreach(var element in a_very_long_array)
{
DoATimeConsumingTask(element);
}
Console.WriteLine("Took me " + t.Elapsed);
return;
}
Devo chiamare t.Stop()
prima di tornare?
Per quanto ne so, il garbage collector distruggerà tutto ciò che non ha una catena di riferimento che ritorna al metodo principale. L'unico riferimento allo Stopwatch
creato è t
, quindi quando DoTimeIntensiveOperation
, t
verrà liberato e lo Stopwatch
dovrebbe essere idoneo per la distruzione. Ma il fatto che sia ancora "ticchettante" interferisce con il GC?