Я хочу создать внутреннюю систему обмена сообщениями, которая может сообщать мне продолжительность вызова некоторого кода. Я думал о простоте использования, чтобы класс SystemMessage реализовал IDisposable.
Я бы установил метку времени во время конструктора SystemMessage, и если бы был вызван Dispose, я мог бы определить продолжительность.
Проблема в том, что я не хочу иметь объект GC'ed. Я хочу, чтобы он оставался как часть MessageCollection.
Есть ли в C # другая конструкция, которая может дать мне удобство использования оператора Statement, не наступая на предполагаемую функцию IDisposable.
Using (message = Collection.CreateNewMessage("FileDownlading"))
{
// I wonder how long it is taking me to download this file in production?
// Lets log it in a message and store for later pondering.
WebClass.DownloadAFile("You Know This File Is Great.XML");
}
// we fell out of the using statement, message will figure out how long
// it actually took to run.
// This was clean and easy to implement, but so wrong?