Maison > développement back-end > C++ > Comment puis-je transmettre des paramètres à une méthode ThreadStart en C# ?

Comment puis-je transmettre des paramètres à une méthode ThreadStart en C# ?

DDD
Libérer: 2025-01-07 08:02:10
original
632 Les gens l'ont consulté

How Can I Pass Parameters to a ThreadStart Method in C#?

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));
Copier après la connexion

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();
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal