У меня очень простой механизм ведения журнала в моем приложении, который периодически записывает строку в файл (библиотека журналов будет излишней для моих нужд), которая выглядит примерно так:Использование инструкции using с уже созданным объектом
private string logfile = @"C:\whatever.log";
public void WriteLine(string line)
{
using(FileStream fs = File.Open(logfile, FileMode.Append))
{
// Log Stuff
}
}
Таким образом, в любое время, когда я вызываю этот метод, новый FileStream создается и удаляется после завершения регистрации. Поэтому я рассматривал возможность использования уже экземпляр объекта, чтобы предотвратить непрерывное создание новых объектов:
private string logfile = @"C:\whatever.log";
private FileStream myStream = File.Open(logfile, FileMode.Append);
public void WriteLine(string line)
{
using(myStream)
{
// Log Stuff
}
}
Однако the MSDN reference discourages this (последний пример), из-за проблемы области видимости. Что делать в этом случае? Является ли накладные расходы в моем первом примере незначительными?
Micro-оптимизации?Сначала измерьте ... –
Вы понимаете, почему вторая идея - это не просто то, что должно быть обескуражено, но плоская работа не работает? Рассматривали ли вы просто использование 'File.AppendText', чтобы сделать вещи проще? (и это все в дополнение к точке Митча, что, возможно, даже не стоит заботиться о ней в первую очередь). – Chris
Вы знаете, что 'using' использует поток? Итак, после первого вызова «WriteLine», поток будет удален и больше не будет использоваться. –