none
Hilos background RRS feed

  • Pregunta

  • Buenas tardes,

    Me gustaría saber como hago para que un hilo que estoy ejecutando esté corriendo durante todo el ciclo de vida de la aplicacion.

    Resulta que tengo que hacer unas constantemente validaciones.

    lo que hice para resolver mi problema fue crear un hilo

    que lo comienzo en el load y llama al método que hace la validacion y en ese método lo que hice fue crear un ciclo infinito para que siempre esté ejecutando la validacion.

    Hay una forma más óptima.

     

    Gracias

     

     


    La tecnologia te envuelve
    viernes, 12 de noviembre de 2010 20:35

Respuestas

Todas las respuestas

  • Buenas tardes,

    Me gustaría saber como hago para que un hilo que estoy ejecutando esté corriendo durante todo el ciclo de vida de la aplicacion.

    Resulta que tengo que hacer unas constantemente validaciones.

    lo que hice para resolver mi problema fue crear un hilo

    que lo comienzo en el load y llama al método que hace la validacion y en ese método lo que hice fue crear un ciclo infinito para que siempre esté ejecutando la validacion.

    Hay una forma más óptima.

     

    Gracias

     

     


    La tecnologia te envuelve


    Además me gustaría saber si le puedo poner tiempo a los hilos.

    Gracias


    La tecnologia te envuelve
    viernes, 12 de noviembre de 2010 20:36
  • hola

    no me parece mal la idea

    por ahi para esperar un timepo podrias implementar un while con un true que nunca termine

    pero dentro suarias un Thread.Sleep() para espera run tiempo

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    viernes, 12 de noviembre de 2010 20:46
  • Hola, podrias pasarte por mi Blog, tengo desarrollado el tema de hilos (preparando la certificación 70-536) y quizas te sea de utilidad:

    Capítulo 7 – Threading (Manejo de Hilos)–Parte 1

    Capítulo 7 – Threading (Manejo de Hilos)–Parte 2

    en la parte uno explico ampliamente todos las propiedades y métodos que puedes ocupar, desde la creación de un simple hilo, hilos múltiples, y métodos de sincronización

    en la segunda parte hago explicación de los modelos de programacion asincronica, y uso de las clases SynchronizationContext y Timer!

     

    Saludos!

     



    Victoria Rodriguez

    Raona - Software Engineer

    Mi BLog
    • Propuesto como respuesta Victoria Rodriguez martes, 16 de noviembre de 2010 0:25
    • Marcado como respuesta xGs_Manco martes, 12 de julio de 2011 16:23
    martes, 16 de noviembre de 2010 0:25
  • Alguien sabe para que se usa la clase  SynchronizationContext  ya he buscado información y no encuentro algo concreto. Tengo este ejemplo de microsoft pero no le veo lo util, ojala alguien me pueda ayudar, ya me desespere con esta clase.

    Saludos y Gracias

     

    class BankAccount

    {

     

    public decimal balance;

     

    public void Deposit(decimal amount)

    {

    balance += amount;

    }

     

    public void Withdraw(decimal amount)

    {

    balance -= amount;

    }

    }

     

    class Program

    {

     

    static BankAccount account;

     

    static void Main(string[] args)

    {

     

    int id = Thread.CurrentThread.ManagedThreadId;

    account =

    new BankAccount();

     

    SendOrPostCallback deposit = new SendOrPostCallback(Deposit);

     

    SendOrPostCallback withdraw = new SendOrPostCallback(Withdraw);

     

    SynchronizationContext ctx = new SynchronizationContext();

     

    ctx.Post(deposit, 500);

    ctx.Post(withdraw, 500);

     

     

     

    Console.ReadLine();

     

    }

     

    static void Withdraw(object state)

    {

     

    int id = Thread.CurrentThread.ManagedThreadId;

     

    Console.WriteLine("2Withdraw: current balance = {0:C}",

    account.balance);

    account.Withdraw(

    decimal.Parse(state.ToString()));

     

    Console.WriteLine("2Withdraw: new balance = {0:C}", account.balance);

    }

     

    static void Deposit(object state)

    {

     

    int id = Thread.CurrentThread.ManagedThreadId;

     

    Console.WriteLine("1Withdraw: current balance = {0:C}",

    account.balance);

    account.Deposit(

    decimal.Parse(state.ToString()));

     

    Console.WriteLine("1Deposit: new balance = {0:C}", account.balance);

    }

    }

    jueves, 18 de noviembre de 2010 22:18
  • Hola,

     

    >Alguien sabe para que se usa la clase  SynchronizationContext  ya he buscado información y no

    >encuentro algo concreto. Tengo este ejemplo de microsoft pero no le veo lo util, ojala alguien me

    >pueda ayudar, ya me desespere con esta clase.

     

    Aver si este ejemplo te puede ayudar enteder un poco no se si ya lo has visto ¿?

     

    Como Entender la clase SynchronizationContext  

     

    http://www.codeproject.com/KB/threads/SynchronizationContext.aspx


    Enmanuel Grullard@Developer ASP.NET,ASP.NET MVC,VB6,VB.NET ,C#.NET
    jueves, 18 de noviembre de 2010 22:26
  • Para un proceso de comprobación que se va a ejecutar de forma paralela al hilo de ejecución principal lo mejor es que te crees un hilo como planteas. Además, te recomiendo que al crearlo establezcas la propiedad IsBackground a true para indicar que efectivamente es un hilo que corre en background respecto del hilo principal. De esta manera si termina la ejecución del hilo principal, termina la ejecución de los hilos en background del proceso, en caso contrario podría terminar la ejecución del hilo principal y tener aun en ejecución otros hilos.

    Además, y como te recomiendan, utiliza el método Thread.Sleep() para que el hilo realice su trabajo cada x tiempo, de otro modo lo que harías sería quitarle tiempo de cpu al hilo principal pues lo que se intentaría es asignarle el mayor tiempo posible de cpu.

    Por si te resulta de interés, hace un tiempo escribí un post en mi blog de cómo finalizar hilos, te dejo el enlace: http://labloguera.net/blogs/jonas/archive/2009/09/18/c-mo-terminar-con-la-ejecuci-n-de-un-hilo.aspx

    Enmanuel, interesante el post sobre SynchronizationContext.

    Saludos,

    domingo, 21 de noviembre de 2010 12:04