Классы Trace (Трассировка) и Debug (Отладка) имеют статическую коллекцию слушателей, называемую TraceListenerCollection. Эта коллекция представляет собой список объектов TraceListener, которые получают информацию, выводимую классами Debug (Отладка) и Trace (Трассировка). Слушатели добавляются в коллекцию и удаляются из нее подобно тому, как это делается для любой другой коллекции .NET.
// создать слушатель, который пишет на пульт (console)
TextWriterTraceListener *ConsoleOutput = new
TextWriterTraceListener(
Console::0ut, "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. Слушатель по умолчанию Def aultTraceListener добавляется в коллекции Listener (Слушатель) автоматически. Любой из слушателей, в том числе и предлагаемый по умолчанию, может быть удален из коллекции с помощью вызова метода Remove (Удалить) этой коллекции. Чтобы составить список всех слушателей в коллекции, можно выполнить следующий фрагмент кода:
pEnum =
Trace::Listeners->GetEnumerator(); // Слушатели
while (pEnum->MoveNext())
{
TraceListener *tr =
dynamic_cast<TraceListener *>(pEnum->Current);
Console::WriteLine(
String::Format("\t{0}", tr->Name)); // Строка:: Формат
}