Skip to content

Instantly share code, notes, and snippets.

@Fhernd
Created September 16, 2014 19:29
Show Gist options
  • Save Fhernd/f4e0df34c5c22f68f4de to your computer and use it in GitHub Desktop.
Save Fhernd/f4e0df34c5c22f68f4de to your computer and use it in GitHub Desktop.
Demostración del método `QueueUserWorkItem`.
using System;
using System.Threading;
namespace Recetas.Cap04
{
// Esta clase contiene información de una tarea
// ejecutado por el thread ThreadPool.
public class InfoTarea
{
public string Mensaje;
public int Valor;
public InfoTarea (string texto, int numero)
{
Mensaje = texto;
Valor = numero;
}
}
public sealed class UsoQueueUserWorkItemV2
{
public static void Main()
{
// Crea una instancia de InfoTarea con la
// información requerida por una tarea:
InfoTarea it = new InfoTarea ("Muestra el valor del campo `Valor` es {0}.", 13);
// La tarea se agrega a la cola de ejcución de threads:
ThreadPool.QueueUserWorkItem (new WaitCallback(ProcesoThread), it);
Console.WriteLine ("\nEl método Main lleva a cabo algunas operaciones.");
// El thread principal se detiene 1 segundo, mientras se ejecutan el pool de
// threads. Esto es necesario debido a que el thread principal no espera
// a que los demás threads finalicen:
Thread.Sleep (1000);
Console.WriteLine ("El método Main ha finalizado.\n");
}
// Este método es el encargado de llevar a cabo
// la tarea de ejecución de threads:
public static void ProcesoThread (object infoEstado)
{
InfoTarea ti = (InfoTarea) infoEstado;
Console.WriteLine (ti.Mensaje, ti.Valor);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment