Quelqu'un pourrait-il s'il vous plaît donner un échantillon ou un lien qui décrit comment frayer le fil où chacun fera des travaux différents en même temps. P>
Supposons que j'ai Job1 et Job2. Je veux exécuter à la fois les emplois simultanément. J'ai besoin de ces travaux pour être exécutés en parallèle. Comment puis-je faire ça? P>
3 Réponses :
Tutoriel de filetage de MSDN! P>
http://msdn.microsoft.com/ EN-US / Bibliothèque / AA645740 (vs.71) .aspx p>
Votre lien est (maintenant) cassé (le téléchargement a été "retiré") mais j'ai été capable de trouver link
Bien, fondamentalement, c'est aussi simple que: Cependant, il existe d'autres options telles que la piscine de thread ou (en .NET 4) en utilisant des extensions parallèles. P> J'ai un Tutoriel de filetage , qui est plutôt vieux, et Joe Alabahari a un aussi . P> p>
Supposons que j'ai Job1 et Job2. Je veux exécuter à la fois les emplois simultanément. Votre exemple le fera de manière séquentielle. Mais j'ai besoin de ces travaux pour être exécutés parallèles. Comment puis je faire ça ?
@deepak: Non, cela ne va pas - vous démarrez deux threads et ils vont courir en parallèle. C'est tout le point d'utiliser des threads.
@Jonskeet Et si je souhaite passer des paramètres à la méthode que je veux appeler?
@ABIJEETPATRO: Ensuite, vous utilisez soit paramétréastTheadstart code> ou utilisez une fonction anonyme pour capturer les paramètres. Si ce n'est pas assez de détails, veuillez poser une question distincte (après la recherche de réponse - je soupçonne que la question a été posée avant).
@Jonskeet Oui, merci, merci. Pour voir comment appeler une méthode contenant des paramètres via un thread, cochez ici - Stackoverflow.com/a/3360582/903324
Visual Basic et C # Les utilisateurs peuvent omettre le threadstart code> ou paramétriceThreadstart code> Délégué constructeur lors de la création d'un fil. En C #, spécifiez simplement le nom de la procédure de thread. Le compilateur sélectionne le constructeur de délégué correct. thread thread = nouveau thread (nomofmethodtocall); code> Assurez-vous également que votre méthode est statique: i> b> Statique privé naïvement naïvéfmethodtocall () {// code}; code>
@ SPENCER741: Il n'est pas nécessaire que les conversions de groupe de méthodes statiques fonctionneront avec des méthodes d'instance tant que le contexte de la conversion est également une méthode d'instance.
@ Jonskeet isolant le code dans mon commentaire, la méthode devra être statique, correcte?
@ SPENCER741: Non. Si thread thread = nouveau thread (nomofmethodtocall); code> est exécuté dans une méthode d'instance, c'est bien pour Nomofmethodtocall code> pour être une méthode d'instance. Voir DotNetFiddle.net/bvsoki
Les threads en C # sont modélisés par classe de thread. Lorsqu'un processus démarre (vous exécutez un programme), vous obtenez un seul thread (également appelé fil principal) pour exécuter votre code d'application. Pour démarrer explicitement un autre fil (autre que votre fil principal de l'application), vous devez créer une instance de classe de thread et appeler sa méthode de démarrage pour exécuter le fil à l'aide de 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!");
}
}