C# [Thread] Paramètre à un Thread

Soap

Membre
Inscrit
12 Avril 2017
Messages
72
Reactions
2
#1
Bonsoir, voila ma question concerne les Threads a leur instanciations.Plus précisément lorsque la méthode passée pour paramètre au thread comporte un argument ou plusieurs arguments.Je sais qu'il existe un moyen simple et efficace, faire une class spéciale pour cela ou bien directement une méthode anonyme(ou une expression lambda). Mais que ce passe t-il finalement lorsque a mon thread je passe une méthode générique ? Je n'ai plus ce problème d'argument à l'instanciation et pourtant je peux bien accéder a l'argument de ma fonction depuis le thread ??
De plus pourquoi lorsque je fais une méthode anonyme au delegate du thread, je suis obligé de mettre comme argument de méthode un "object" ?

https://image.noelshack.com/fichiers/2017/20/1495302097-capture.png
 
Inscrit
25 Novembre 2015
Messages
169
Reactions
20
#2
Dans ce cas précis il se passe rien, tu passe un string, le ToString() dans la méthode Display est pas nécessaire, le where T : Class n'est pas nécessaire non plus, ça peut afficher une struct aussi via la méthode WriteLine.

Tu peux remplacer ton while par une boucle for :

C#:
for(var count = 0 ; count < 10 ; i++)
{

}
Et comme dit précédemment, on ne créer plus de thread directement en C# moderne, on utiliserait la TPL, comme ceci par exemple :

C#:
var tsk = new Task(() =>
{
      // your code
});

tsk.Start();
ou comme cela :

C#:
Task.Run( () =>
{
      // your code
});
Et pour les méthodes renvoyant un résultat, on crée un Task<TResult>.

La documentation sur le site de microsoft est plutôt bien faite, tu devrais aller la lire :)
 

Soap

Membre
Inscrit
12 Avril 2017
Messages
72
Reactions
2
#3
Dans ce cas précis il se passe rien, tu passe un string, le ToString() dans la méthode Display est pas nécessaire, le where T : Class n'est pas nécessaire non plus, ça peut afficher une struct aussi via la méthode WriteLine.

Tu peux remplacer ton while par une boucle for :

C#:
for(var count = 0 ; count < 10 ; i++)
{

}
Et comme dit précédemment, on ne créer plus de thread directement en C# moderne, on utiliserait la TPL, comme ceci par exemple :

C#:
var tsk = new Task(() =>
{
      // your code
});

tsk.Start();
ou comme cela :

C#:
Task.Run( () =>
{
      // your code
});
Et pour les méthodes renvoyant un résultat, on crée un Task<TResult>.

La documentation sur le site de microsoft est plutôt bien faite, tu devrais aller la lire :)
Merci encore de ton aide Nameless, oui effectivement le where était juste là pour un test et je vais plus privilégier le for par rapport au while. Je commencerais la TPL une fois ce cours terminée :
La programmation réseau en .NET
 
Inscrit
25 Novembre 2015
Messages
169
Reactions
20
#4
Si tu comptes développer un bot ou un emu je doute que le protocol UDP te soit utile a comprendre ...
 

Soap

Membre
Inscrit
12 Avril 2017
Messages
72
Reactions
2
#5
Si tu comptes développer un bot ou un emu je doute que le protocol UDP te soit utile a comprendre ...
Oui, le tcip sera plus favorable. Cependant l udp a éveillé ma curiosité.
 
Haut Bas