Comment démarrer un thread avec des paramètres en C #?
Réponses
Trop de publicités?L'une des deux surcharges du constructeur Thread prend un délégué ParameterizedThreadStart qui vous permet de passer un seul paramètre à la méthode start. Malheureusement, il ne permet qu'un seul paramètre et il le fait d'une manière dangereuse parce qu'il le passe en tant qu'objet. Je trouve qu'il est beaucoup plus facile d'utiliser une expression lambda pour capturer les paramètres pertinents et les transmettre de manière fortement typée.
Essayez le suivant
public Thread StartTheThread(SomeType param1, SomeOtherType param2) {
var t = new Thread(() => RealStart(param1, param2));
t.Start();
return t;
}
private static void RealStart(SomeType param1, SomeOtherType param2) {
...
}
Thread thread = new Thread(Work);
thread.Start(Parameter);
private void Work(object param)
{
string Parameter = (string)param;
}
Le type de paramètre doit être un objet.
MODIFIER:
Bien que cette réponse ne soit pas incorrecte, je recommande de ne pas utiliser cette approche. L'utilisation d'une expression lambda est beaucoup plus facile à lire et ne nécessite pas de conversion de type. Voir ici: http://stackoverflow.com/a/1195915/52551