elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Crear una consola por hilo.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear una consola por hilo.  (Leído 2,692 veces)
SARGE553413

Desconectado Desconectado

Mensajes: 176


Ver Perfil
Crear una consola por hilo.
« en: 7 Julio 2014, 15:48 pm »

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

Ari Slash


Desconectado Desconectado

Mensajes: 1.783



Ver Perfil WWW
Re: Crear una consola por hilo.
« Respuesta #1 en: 7 Julio 2014, 16:15 pm »

http://msdn.microsoft.com/es-es/library/system.threading.thread.aspx

Hay mucha documentacion, en el ejemplo, simplemente crea otra funcion, adicional a "ThreadProc" y obviamente similar, en el main:

Código
  1. Thread t = new Thread(new ThreadStart(ThreadProc));
  2. t.Start();
  3.  
  4. Thread t2 = new Thread(new ThreadStart(ThreadProc2));
  5. t2.Start();
  6.  


En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: Crear una consola por hilo.
« Respuesta #2 en: 7 Julio 2014, 16:31 pm »

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:

Citar
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.aspx

Saludos!
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

SARGE553413

Desconectado Desconectado

Mensajes: 176


Ver Perfil
Re: Crear una consola por hilo.
« Respuesta #3 en: 7 Julio 2014, 23:18 pm »

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
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Crear una consola por hilo.
« Respuesta #4 en: 12 Julio 2014, 21:16 pm »

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



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Crear una consola
Java
0x0309 1 4,126 Último mensaje 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,379 Último mensaje 21 Febrero 2009, 21:03 pm
por Foxy Rider
Crear precarga independiente del hilo principal.
.NET (C#, VB.NET, ASP)
Lopardo 0 3,072 Último mensaje 14 Junio 2011, 16:18 pm
por Lopardo
Crear Un Corazon En la consola con movimiento
Programación C/C++
ximenaferneymega 4 3,398 Último mensaje 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,058 Último mensaje 10 Mayo 2019, 17:15 pm
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines