Во время работы приложения, в качестве мониторинга времени выполнения метода или доступа к свойству используется класс Stopwatch из System.Diagnostics. Работает Stopwatch очень просто, он замеряет время прошедшее между вызовами Start* и Stop* методами. Приведу простой пример:
// Наш секундомер.
Stopwatch timer = new Stopwatch();
timer.Start(); // Запустим секундомер
try
{
Thread.Sleep(1234); // долгая операция
}
finally
{
timer.Stop(); // Остановим секундомер
// Показания секундомера:
TimeSpan elapsed = timer.Elapsed;
Console.WriteLine("Время выполнения {0}", elapsed);
}
В данном примере видны все неудобства использования Stopwatch, это необходимость явно создавать объект Stopwatch, это явный запуск и остановка секундомера, при этом, если возможны исключения, то нужно добавить и обработку исключений.