Passer des paramètres à la méthode ThreadStart en C#
En C#, la méthode ThreadStart est un délégué qui définit le comportement d'exécution du thread. Cependant, transmettre des paramètres à cette méthode peut présenter des défis.
Par exemple, considérons le code suivant dans lequel nous tentons de transmettre un paramètre à la méthode "download" :
public void download(string filename) { // download code } Thread thread = new Thread(new ThreadStart(download(filename));
Ce code entraîner une erreur « type de méthode attendu ». Pour transmettre efficacement les paramètres, envisagez les approches suivantes :
Utilisation d'expressions Lambda anonymes :
La solution la plus simple consiste à utiliser des expressions lambda anonymes directement dans le constructeur ThreadStart :
string filename = ... Thread thread = new Thread(() => download(filename)); thread.Start();
Cette approche permet de transmettre plusieurs paramètres et fournit une vérification au moment de la compilation sans avoir besoin d'un casting depuis "objet."
Utilisation de ParameterizedThreadStart :
Vous pouvez également utiliser le délégué ParameterizedThreadStart, défini comme suit :
public delegate void ParameterizedThreadStart(object obj);
Cela vous permet pour passer un seul paramètre d'objet au fil :
ParameterizedThreadStart threadStart = new ParameterizedThreadStart(download); Thread thread = new Thread(threadStart); thread.Start(filename);
Passer plusieurs paramètres :
Pour les scénarios dans lesquels plusieurs paramètres doivent être transmis, des types de délégués personnalisés ou des techniques telles que la capture de variables via des fermetures peuvent être utilisées . Cependant, l'approche d'expression lambda anonyme est généralement préférée pour sa simplicité et sa commodité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!