2010-04-18 3 views
7

Quelqu'un pourrait-il donner un exemple ou un lien qui décrit comment générer un fil où chacun fera un travail différent en même temps.Comment générer un fil dans C#

Supposons que j'ai job1 et job2. Je veux exécuter les deux tâches simultanément. J'ai besoin que ces travaux soient exécutés parallèlement. Comment puis je faire ça?

Répondre

14

Eh bien, au fond, il est aussi simple que:

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

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

Cependant, il existe d'autres options telles que le pool de threads ou (dans .NET 4) en utilisant des extensions parallèles. J'ai un threading tutorial qui est plutôt vieux, et Joe Alabahari has one too.

+0

Supposons que j'ai job1 et job2. Je veux exécuter les deux tâches simultanément. Votre exemple le fera de manière séquentielle. Mais j'ai besoin que ces travaux soient exécutés parallèlement. Comment puis je faire ça ? – deepak

+0

@deepak: Non, vous ne démarrerez pas deux threads, et ils fonctionneront en parallèle. C'est tout l'intérêt d'utiliser des threads. –

+0

@JonSkeet Que faire si je souhaite passer des paramètres à la méthode que je veux appeler? –

0

Les threads en C# sont modélisés par Thread Class. Lorsqu'un processus démarre (vous exécutez un programme), vous obtenez un seul thread (également appelé thread principal) pour exécuter le code de votre application. Pour commencer explicitement un autre thread (autre que votre application thread principal), vous devez créer une instance de la classe de fil et appeler sa méthode de démarrage pour lancer le fil en utilisant C#, Voyons un exemple

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!"); 
    } 
    } 

Vous pouvez en savoir plus tutorial Multithreading in C#, Ici, vous apprendrez à tirer parti de la classe Thread et de la bibliothèque parallèle de tâches fournie par C# et .NET Framework pour créer des applications robustes, réactives, parallèles et répondant aux attentes des utilisateurs.