2010-04-18 17 views
7

¿Podría alguien dar una muestra o un enlace que describa cómo generar hilo en el que cada uno hará un trabajo diferente al mismo tiempo?Cómo generar hilo en C#

Supongamos que tengo job1 y job2. Quiero ejecutar ambos trabajos simultáneamente. Necesito que esos trabajos se ejecuten de forma paralela. ¿Cómo puedo hacer eso?

Respuesta

14

Bueno, en el fondo es tan simple como:

ThreadStart work = NameOfMethodToCall; 
Thread thread = new Thread(work); 
thread.Start(); 
... 

private void NameOfMethodToCall() 
{ 
    // This will be executed on another thread 
} 

Sin embargo, hay otras opciones, como la agrupación de hebras o (en .NET 4) usando extensiones paralelas.

Tengo un threading tutorial que es bastante viejo, y Joe Alabahari has one too.

+0

supongamos que tengo job1 y job2. Quiero ejecutar ambos trabajos simultáneamente. Tu ejemplo lo hará secuencialmente. Pero necesito que esos trabajos se ejecuten de forma paralela. Cómo puedo hacer eso ? – deepak

+0

@deepak: No, no lo hará, iniciará dos hilos y se ejecutarán en paralelo. Ese es el punto de usar hilos. –

+0

@JonSkeet ¿Qué ocurre si deseo pasar parámetros al método que deseo llamar? –

0

Los subprocesos en C# se modelan por clase de subprocesos. Cuando se inicia un proceso (ejecuta un programa), obtiene un único hilo (también conocido como el hilo principal) para ejecutar el código de la aplicación. Para iniciar explícitamente otro hilo (que no sea el hilo principal de la aplicación), tiene que crear una instancia de la clase hilo y llamar a su método de inicio para ejecutar el hilo usando C#, Vamos a ver un ejemplo

using System; 
    using System.Diagnostics; 
    using System.Threading; 

    public class Example 
    { 
    public static void Main() 
    { 
      //initialize a thread class object 
      //And pass your custom method name to the constructor parameter 

      Thread thread = new Thread(SomeMethod); 

      //start running your thread 

      thread.Start(); 

      Console.WriteLine("Press Enter to terminate!"); 
      Console.ReadLine(); 
    } 

    private static void SomeMethod() 
    { 
      //your code here that you want to run parallel 
      //most of the cases it will be a CPU bound operation 

      Console.WriteLine("Hello World!"); 
    } 
    } 

Puede obtener más información en esto tutorial Multithreading in C#, aquí aprenderá cómo aprovechar la clase Thread y la biblioteca paralela de tareas proporcionadas por C# y .NET Framework para crear aplicaciones sólidas que sean receptivas, paralelas y cumplan con las expectativas del usuario.