Запись в консоль в C#: можете ли вы использовать одну запись в нескольких цветах или заблокировать консоль для выполнения нескольких записей?

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

Таким образом, приведенный ниже пост выглядел так, как будто он шел в правильном направлении, но я не контролирую весь код, который записывается на консоль. Мой код ограничен dll, который я создаю, поэтому я не могу просто ставить блокировки везде, где это может помешать. Если бы речь шла о блокировках и понимании потоков, не было бы и речи. Это вообще возможно без блокировок в моем коде?

Как заблокировать консоль между потоками в C#.NET?

1 ответ

Замена существующего выходного потока на собственный TextWriter, используя Console.SetOut, В вашем пользовательском модуле записи текста он синхронизирует доступ к консоли для какого-либо объекта, а затем записывает обратно в реальный стандартный вывод, а также предоставляет некоторые средства для вспомогательного метода, который вы также должны иметь возможность синхронизировать с тем же объектом, что Когда этот вспомогательный метод работает, он может заблокировать доступ к консоли для остальной части приложения.

Другие вопросы по тегам