Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1507 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Passer des paramètres à un Thread ? [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] Passer des paramètres à un Thread ? [Résolu]

n°771424
HannibAlBu​ndie
Posté le 21-06-2004 à 14:33:46  profilanswer
 

Bonjour,
 
Je voudrais savoir si il existe une façon de faire "officielle" prévue par  Microsoft pour passer des paramètres à un thread :ange:. Bien évidemment, ces paramètres sont connus avant le lancement du thread.
 
J'ai déjà pu lire différentes solutions, mais aucune n'est basée sur une classe et/ou méthode prévue à cet effet par Microsoft :heink:.
Il n'y aurait donc pas de solution plus "propre" que la Hashtable faisant correspondre les thread avec les paramètres qui leur sont destinés :??:?
 
N'hésitez pas à demander plus de précision si je n'ai pas été assez clair.
 
Merci d'avance :hello:


Message édité par HannibAlBundie le 24-06-2004 à 09:46:21
mood
Publicité
Posté le 21-06-2004 à 14:33:46  profilanswer
 

n°771447
Taz
bisounours-codeur
Posté le 21-06-2004 à 14:44:57  profilanswer
 

ou utiliser un delegate

n°771457
Taz
bisounours-codeur
Posté le 21-06-2004 à 14:54:01  profilanswer
 

Code :
  1. using System.Threading;
  2. public class ThreadArgs
  3. {
  4.   int i;
  5.   public ThreadArgs(int ii)
  6.   {
  7.     this.i = ii;
  8.   }
  9.   public void Run()
  10.   {
  11.     while(this.i >= 0)
  12.     {
  13.       System.Console.WriteLine(this.i);
  14.       this.i--;
  15.     }
  16.   }
  17.   public static void Main()
  18.   {
  19.     ThreadArgs ta = new ThreadArgs(10);
  20.     Thread t = new Thread( new ThreadStart(ta.Run) );
  21.     t.Start();
  22.     t.Join();
  23.   }
  24. }

n°771503
HannibAlBu​ndie
Posté le 21-06-2004 à 15:49:04  profilanswer
 

Merci beaucoup, je trouve ça effectivement plus clean, moins bricolage du dimanche avec Leroy Merlin.
 
Par contre, désolé d'être pointilleux (et ignorant :sweat:), mais pourrais tu m'expliquer ce que tu appelles 'delegate' ?
Parce que je connais la classe Delegate, mais tu n'y fais pas référence :heink:. Donc j'apprécierais bien une petite explication :whistle:.
 
Merci d'avance :jap:

n°771517
Taz
bisounours-codeur
Posté le 21-06-2004 à 15:58:43  profilanswer
 

ben c'est dans ton cours de C# ... :D

n°771691
HannibAlBu​ndie
Posté le 21-06-2004 à 17:20:28  profilanswer
 

Bon, après une brève recherche sur le net, les explications que j'ai pu trouver étaient toutes de cet ordre :

Citation :

En C# on retrouve la possibilité de définir des signatures de fonctions. C'est à dire, on peut préciser par exemple qu'une méthode prends en paramète une méthode de type void et prenant deux paramètres entiers. On passe en fait l'addresse de cette fonction.


Ca correspond bien à l'idée que j'en avais au travers de la courte définition de msdn :

Citation :

la classe Delegate représente un délégué qui est une structure de données référençant une méthode static ou une instance de classe et une méthode d'instance de cette classe.


Malheureusement, vu que tu n'utilises aucun delegate à proprement parlé (pas d'utilisation du mot clé 'delegate') je n'ai pas réussi à comprendre pourquoi tu définis ta solution comme "utiliser un delegate" :sweat:. On retrouve effectivement le concept du delegate lors de l'appel à ThreadStart, mais cela reste commun à tout usage aux threads :heink:.
 
Je suis bien conscient qu'une longue explication serait laborieuse à écrire :pfff:, donc vu que je n'ai pas de cours de C#, si tu avais ne serait-ce qu'un ptit lien ça me renderait service :p.
 
En tout cas, merci de ton intérêt :jap:


Message édité par HannibAlBundie le 21-06-2004 à 17:21:55
n°771866
Taz
bisounours-codeur
Posté le 21-06-2004 à 20:01:06  profilanswer
 

t'as rien à déclarer.  
 
dans le cas qui nous intéresse, le constructeur de Thread attend un delegate void ThreadStart(); (une fonction qui retourne void)
 
et bien tu lui donne ! tu as un objet avec une méthode qui satisfait ce prototype et vlan new ThreadStart( instance.méthode) tu instancie un Delegate d, tel que d() <-> instance.méthode()

n°773803
HannibAlBu​ndie
Posté le 23-06-2004 à 09:35:59  profilanswer
 

okiii, ha yé ... tout s'éclaire :p
 
Merci beaucoup ! :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Passer des paramètres à un Thread ? [Résolu]

 

Sujets relatifs
[resolu] taille du texte[ Résolu ] Importer fichier .sql
[RESOLU]Convertir un entier en HEXA sur un nombre de bitsque tout le monde lise ce thread et vite!
rouvrir le thread[Résolu] Récuper champ texte formulaire DATA [sans composant]
[resolu]Renumeroter dans la BBD[MySQL] problème d'apostrophe [résolu]
Paramètres passés bizarrement... [résolu] 
Plus de sujets relatifs à : [C#] Passer des paramètres à un Thread ? [Résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR