Иллюстрированный самоучитель по Architecture .NET

Коллекция слушателей. Резюме.

Классы Trace (Трассировка) и Debug (Отладка) имеют статическую коллекцию слушателей, называемую TraceListenerCollection. Эта коллекция представляет собой список объектов TraceListener, которые получают информацию, выводимую классами Debug (Отладка) и Trace (Трассировка). Слушатели добавляются в коллекцию и удаляются из нее подобно тому, как это делается для любой другой коллекции .NET.

// создать слушатель, который пишет на пульт (console)
TextWriterTraceListener *ConsoleOutput = new
TextWriterTraceListener(
Console::Out, "Console::Out Listener"); // Слушатель
Trace::Listeners › Add(ConsoleOutput); // Слушатели › Добавить
// создать слушатель, который пишет в текстовый файл
Stream *OutputFile = File::Create("output.txt"); // Файл:: Создать
TextWriterTraceListener *OutputFileListener = new
TextWriterTraceListener(
OutputFile,
"Output File Listener");
// "Слушатель Выходного файла");
Trace::Listeners › Add(OutputFileListener); // Слушатели › Добавить
// удалить заданный по умолчанию (default) слушатель
Trace::Listeners › Remove("Default"); // Слушатели › Удалить ("по умолчанию")

В этом фрагменте программы объект OutputFileListener будет посылать вывод трассировки в файл с именем output.txt. Слушатель по умолчанию DefaultTraceListener добавляется в коллекции Listener (Слушатель) автоматически. Любой из слушателей, в том числе и предлагаемый по умолчанию, может быть удален из коллекции с помощью вызова метода Remove (Удалить) этой коллекции. Чтобы составить список всех слушателей в коллекции, можно выполнить следующий фрагмент кода:

pEnum =
Trace::Listeners › GetEnumerator(); // Слушатели
while (pEnum › MoveNext())
{
TraceListener *tr =
dynamic_cast<TraceListener *>(pEnum › Current);
Console::WriteLine(
String::Format("\t{0}", tr › Name)); // Строка:: Формат
}

Резюме

Добавление в приложения инструментальных средств для различных уровней детализации вывода отладки и диагностики является общей задачей программирования. Классы диагностики являются примером того, как же в среде .NET для решения стандартных задач программирования реализуются классы, чтобы программист мог сконцентрироваться именно на логике самой программы, а не на создании инфраструктуры отладки.

С другой стороны, это также является примером продуманного разделения классов .NET, которое позволяет настраивать инфраструктуру таким образом, чтобы программист мог использовать минимум или максимум доступных функций, в зависимости от его потребностей.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.