Autor
|
Tema: Crear una consola por hilo. (Leído 2,700 veces)
|
SARGE553413
Desconectado
Mensajes: 176
|
Hola a todos.
Quiero lanzar 2 hilos y que cada uno de ellos abra una ventana de consola y escriba en ella un mensaje.
He estado buscando por internet y no encuentro ningún sitio donde expliquen esto.
¿Cómo puede hacerse esto en C# o c++/cli?
Saludos y gracias.
|
|
|
En línea
|
|
|
|
|
kub0x
Enlightenment Seeker
Moderador
Desconectado
Mensajes: 1.486
S3C M4NI4C
|
Buenas SARGE553413, me imagino que lo que ha puesto Ari Slash ya lo conocerías (iniciar/spawnear threads). Sino en C++/CLI igual con CreateThread te sirve y no tienes que usar el Framework. La otra cuestión: para adjuntar una consola al proceso tienes que hacer uso de la función AllocConsole y AttachConsole, las cuales se encargan de gestionar los recursos (std-in/out/err) y su anexamiento al proceso actual. El framework nos abstrae de esta tarea, por lo que te tocará implementar. Según la MSDN: A process can be associated with only one console, so the AllocConsole function fails if the calling process already has a console.....
A process can be attached to at most one console. If the calling process is already attached to a console, the error code returned is ERROR_ACCESS_DENIED....
Aún así no desesperes, aquí te dejo algo más detallado que podría darte una solución, además como trabajas sobre C++/CLI estás mas cerca del low-level así te ahorras la interoperabilidad con .NET (el famoso Marshalling, P/Invoke). http://msdn.microsoft.com/en-us/library/windows/desktop/ms682528%28v=vs.85%29.aspxSaludos!
|
|
|
En línea
|
|
|
|
SARGE553413
Desconectado
Mensajes: 176
|
Gracias por las respuestas.
Creo que se lo que hago mal, yo hacía lo de AllocConsole() (y no funcioanan, todos escribían en la misma consola) con cada hilo, pero luego no hacía el AttachConsole(), probaré eso.
Además imagino que no podré usar Console::WriteLine() porque ese Console es la misma para todos los hilos?, ¿como una variable global quizá?
Bueno probaré y os digo.
Saludos.
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Conectado
Mensajes: 9.878
|
Una alternativa bastante sucia, dada la prohibición de adjuntar más de 1 consola por proceso, podría ser esta:
Por cada thread que inicies, ejecutas una CMD (instanciando la Class Process, nada de adjuntar mediante la WinAPI), y ya tendrías una consola "adjuntada" y distinta por cada thread, con todo el control necesario para escribir en el Buffer de cada una de ellas.
Saludos.
|
|
« Última modificación: 12 Julio 2014, 21:27 pm por Eleкtro »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Crear una consola
Java
|
0x0309
|
1
|
4,130
|
24 Enero 2009, 06:31 am
por Ragnarok
|
|
|
Crear un Hilo pasandole parametro al metodo VB.NET
.NET (C#, VB.NET, ASP)
|
Fr4NN^
|
1
|
10,391
|
21 Febrero 2009, 21:03 pm
por Foxy Rider
|
|
|
Crear precarga independiente del hilo principal.
.NET (C#, VB.NET, ASP)
|
Lopardo
|
0
|
3,073
|
14 Junio 2011, 16:18 pm
por Lopardo
|
|
|
Crear Un Corazon En la consola con movimiento
Programación C/C++
|
ximenaferneymega
|
4
|
3,409
|
24 Noviembre 2016, 01:12 am
por engel lex
|
|
|
Pregunta acerca de crear un nuevo tema/hilo
Sugerencias y dudas sobre el Foro
|
@XSStringManolo
|
4
|
4,084
|
10 Mayo 2019, 17:15 pm
por @XSStringManolo
|
|