Created
September 16, 2014 19:29
-
-
Save Fhernd/f4e0df34c5c22f68f4de to your computer and use it in GitHub Desktop.
Demostración del método `QueueUserWorkItem`.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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