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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Creación de hilos pasando por los estados más comúnes en C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Creación de hilos pasando por los estados más comúnes en C#  (Leído 8,199 veces)
LightHugh

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Creación de hilos pasando por los estados más comúnes en C#
« en: 5 Noviembre 2009, 07:14 am »

Nevamente molestando a la gente de este foro, y bien, resulta que me han pedido realizar un programa en C#  que ejecute la inicialización de un hilo (Thread) pero notificando que tiene que pasar por los estados .Start();  .Abort();  .Sleep();  .Join(); IsAlive(); y nuevamente que me mande un mensaje de que a pesar de haberlo inicializado una vez pueda repetir ese ciclo, es decir, que pueda inicializarlo otra vez y empezar nuevamente, me mencionaban que era necesario un do-while para que haga los recorridos pero es ahí donde yo me atoré porque hago la inicialización y llego hasta el sleep pero cuando quiero inicializarlo otra vez me manda un mensaje de error diciendo que el hilo ha sido inicializado... espero que lo masters de la programación puedan hecharme una salvadita a este gran problema y de antemano se los agradeceré.  Larga vida al foro ! ;D


En línea

MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: Creación de hilos pasando por los estados más comúnes en C#
« Respuesta #1 en: 5 Noviembre 2009, 16:26 pm »

pon un poco de tu codigo para entender bien como lo tienes.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


En línea


LightHugh

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Creación de hilos pasando por los estados más comúnes en C#
« Respuesta #2 en: 5 Noviembre 2009, 18:00 pm »

Esto es parte de mi código, sé que tiene errores de sintaxis aún por ello pido de su ayuda.

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace CHilos1
{
    public class CHilo1
    {
        private Thread hilo;//identificador del hilo
        public CHilo1() : this(null) { }
        public CHilo1(string nombreHilo)
        {
            hilo = new Thread(ProcHilo);
            if (nombreHilo != null) hilo.Name = nombreHilo;
            //iniciar el hilo
           // hilo.Start();

        }
        public Thread HiloSubyacente
        {
            get { return hilo; }//referencia
        }
        private void ProcHilo()
        {
           // Console.WriteLine("el hilo finalizo");
          //  Console.ReadKey();

        }

        static void Main(string[] args) // cuerpo principal
        {
            CHilo1 entra = new CHilo1();
            bool estado;
            estado = entra.HiloSubyacente.IsAlive;
            int op;
            //String resp;
            try{
               // do{
                    Console.WriteLine("Menu");
                    Console.WriteLine("Que deseas hacer:  \n(1) Abortar \n(2) Join \n(3) Sleep \n(4) Iniciar ");
                    op = Convert.ToInt16(System.Console.Read());
                    switch(op){
                        case 1:
                            if (estado == true)
                           
                                Console.WriteLine("El hilo ya esta activo");
                           
                            else
                            {
                                entra.HiloSubyacente.Start();
                                Console.WriteLine("El hilo se inicio");
                                estado = true;
                            }
                            break;
                        case 2:
                            if (estado == true)
                                Console.WriteLine("El hilo ya esta activo");
                            else
                            {
                                entra.HiloSubyacente.Join();
                                Console.WriteLine("el hilo ha muerto");
                                estado = true;
                            }
                            break;
                        case 3:
                            Thread.Sleep(500);
                            Console.WriteLine("esta dormido");
                            break;
                    }
               // }while(true);
                }
                catch(Exception e){
                    Console.WriteLine(e);

                }
           
        }//fin del main
    }//fin de la clase
}// fin del name space
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Creación de hilos pasando por los estados más comúnes en C#
« Respuesta #3 en: 7 Diciembre 2009, 00:11 am »

No tengo Visual Studio acá, por lo que no puedo correrlo, lo miré un poco, pero podrías explicar cual es la finalidad de la aplicación?

Un saludo
En línea

MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 885


mazard.info


Ver Perfil WWW
Re: Creación de hilos pasando por los estados más comúnes en C#
« Respuesta #4 en: 7 Diciembre 2009, 11:28 am »

No tengo Visual Studio acá, por lo que no puedo correrlo, lo miré un poco, pero podrías explicar cual es la finalidad de la aplicación?

Un saludo

Seguramente será algún trabajo de clase para aprender como funcionan los hilos.


Nevamente molestando a la gente de este foro, y bien, resulta que me han pedido realizar un programa en C# que ejecute la inicialización de un hilo (Thread) pero notificando que tiene que pasar por los estados .Start(); .Abort(); .Sleep(); .Join(); IsAlive(); y nuevamente que me mande un mensaje de que a pesar de haberlo inicializado una vez pueda repetir ese ciclo, es decir, que pueda inicializarlo otra vez y empezar nuevamente, me mencionaban que era necesario un do-while para que haga los recorridos pero es ahí donde yo me atoré porque hago la inicialización y llego hasta el sleep pero cuando quiero inicializarlo otra vez me manda un mensaje de error diciendo que el hilo ha sido inicializado... espero que lo masters de la programación puedan hecharme una salvadita a este gran problema y de antemano se los agradeceré. Larga vida al foro ! ;D
A simple vista en tu código:
-La inicialización del hilo está mal, el argumento debe ser un ThreadStart, quedaría: hilo=new Thread(new ThreadStart(ProcHilo));
-ProcHilo no hace nada por lo tanto cuando se ejecute terminará al instante y el .abort, .sleep, .join y demás no tendrán sentido, deberías poner un bucle infinito dentro y hacer el catch de la excepción cuando el hilo principal llame a .abort
-En el hilo principal estas instanciando cHilo1() sin parámetros pero cuando se crea Thread es en el constructor con parámetro nombreHilo, nunca se crea Thread
-public CHilo1() : this(null) { } Hereda de ella misma? :S para que?
-Sobre lo del bucle que recorra todo en orden, el orden a seguir sería:
Start //Inicia el hilo
Sleep //Pausa el hilo durante cierto tiempo
Abort //Provoca excepción en el hilo para finalizarlo
Join //Bloquea el hilo principal hasta que el hilo finaliza

Saludos!
En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
irc://irc.freenode.org/elhacker.net
[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Creación de hilos pasando por los estados más comúnes en C#
« Respuesta #5 en: 8 Diciembre 2009, 02:20 am »

Bien MazarD,

Yo no tenia mucho tiempo pa leer bien el código..

La expoliación es correcta..
En línea

MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 885


mazard.info


Ver Perfil WWW
Re: Creación de hilos pasando por los estados más comúnes en C#
« Respuesta #6 en: 8 Diciembre 2009, 16:15 pm »

Bien MazarD,

Yo no tenia mucho tiempo pa leer bien el código..

La expoliación es correcta..
De nada  :)

Saludos!
En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
irc://irc.freenode.org/elhacker.net
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines