Как создать многопоточное приложение на языке C#, где каждый поток имеет свое собственное окно
Я пытаюсь создать многопоточное приложение на языке c#, где каждый поток имеет свое собственное окно, чтобы его можно было использовать для взаимодействия с каждым из этих потоков. Взаимодействие может осуществляться либо через окно консоли, либо через диалоговое окно.
Что я уже пробовал:
Я попробовал добавить консоль.WriteLine и консоль.ReadLine для каждой функции потока. Наверное, не самый лучший подход...
0x01AA
Вы можете посмотреть здесь: Создание окон в потоках - Win32 apps | Microsoft Docs[^] uups, это W32, извините
Dave Kreskowiak
Приложение может иметь только одну консоль, подключенную к нему, так что ваша идея (я думаю!) иметь консоль на поток не будет работать.
Похоже, вам нужно будет завершить редизайн вашего приложения.
Michael Haephrati
Дэйв, да. Это моя идея, но если бы это была программа Win32 c++, я бы мог добавить свое собственное консольное окно для каждого потока. Вы даже можете добавить окно консоли в приложение на основе диалогового окна. Я не знаю ответа, когда дело доходит до c#.
Dave Kreskowiak
Вообще-то, нет, не можешь. Во всяком случае, не в том же самом процессе. Windows предотвращает это.
Однако вы можете даже в C# создать другое "вспомогательное приложение", которое просто предоставляет именованный канал и выводит его в свое собственное окно консоли. Затем вы можете запустить множество этих помощников, как вы хотите, общаясь с каждым через трубу, говоря им, что отображать в своих консолях.
Из документов на AllocConsole:
Процесс может быть связан только с одной консолью, поэтому функция AllocConsole завершается ошибкой, если вызывающий процесс уже имеет консоль.
Michael Haephrati
Итак, мой код https://www.codeproject.com/Articles/3135812/Creating-a-Console-Based-Window-for-Debugging не будет работать даже из приложения диалогового окна с несколькими потоками?