Открывать новую консоль с каждым новым потоком в C #?

#c# #multithreading #console #console-application

#c# #многопоточность #консоль #консоль-приложение

Вопрос:

Я хочу, чтобы новая консоль открывалась всякий раз, когда я создаю новый поток, чтобы вывод был организован. Мое приложение полностью основано на консоли. Возможно ли это, если да, то как?

С уважением!

Комментарии:

1. Открыть новую консоль, передать ее потоку при его запуске?

2. Может ли процесс иметь более одной консоли?

3. Я думаю, вам, возможно, придется создать стандартное окно с текстовым полем и направить вывод туда. У меня такое ощущение, что у процессов есть только одна консоль. Не уверен, что в .net все по-другому, но в Win32 ситуация именно такова.

4. @DavidHeffernan: вы правы. Я посмотрел на консольный класс , ожидая увидеть Console.Create метод, но его нет.

5. В моем случае у меня есть несколько консолей для каждого потока, я просто хочу одну.

Ответ №1:

Комментарии:

1. Это означает, что он должен создать несколько процессов с одним потоком в каждом?

2. @DaeMoohn Нет, это означает, что он не может создавать несколько консолей в одном приложении.

3. Это интересное ограничение.

Ответ №2:

Обойти это ограничение не сложно.

Код, который вы хотите запустить как отдельный поток с собственным консольным окном, просто закодируйте как отдельное консольное приложение, передавая требуемые параметры в командной строке.

Затем запустите отдельные экземпляры этого кода с помощью Start() внутри вашего основного приложения.

Ответ №3:

Мне удалось заставить это работать, заменив TextWriter (консоль.SetOut()) и сохранение значений в ThreadLocal

Затем, когда вы получаете значения из вашего TextWriter, они указаны для каждого потока