Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème avec les threads

4 réponses
Avatar
Bull
Bonjour,

J'aimerais pouvoir lancer une Sub à laquelle il faut passer un argument à
partir d'une thread et avoir la possibilité de stopper cette thread à tout
moment.

J'ai trouvé deux moyens de lancer des threads, le premier :

Dim thread_maSub as New System.Threading.Thread(AddressOf NomDeMaSub)
thread_maSub.Start()

Avec cette première méthode, je peux bien arrêter ma thread
(thread_maSub.Suspend()), mais je ne peux pas passer un paramètre à ma Sub.

L'autre méthode :

Dim TPool As System.Threading.ThreadPool
TPool.QueueUserWorkItem(New System.Threading.WaitCallback(AddressOf
NomDeMaSub), ParametreDeMaSub)

Avec cette deuxième méthode, je peux bien passer un paramètre (ici
ParametreDeMaSub) mais je n'ai pas de méthode pour la stopper.

Quelqu'un aurait-il une idée donc ?
Merci
Bull

4 réponses

Avatar
Zazar
Bonjour,
J'aimerais pouvoir lancer une Sub à laquelle il faut passer un argument à
partir d'une thread et avoir la possibilité de stopper cette thread à tout
moment.



Dim thread_maSub as New System.Threading.Thread(AddressOf NomDeMaSub)
thread_maSub.Start()

Avec cette première méthode, je peux bien arrêter ma thread
(thread_maSub.Suspend()), mais je ne peux pas passer un paramètre à ma
Sub.



<snip>


Vous pouvez par exemple créer une classe servant à passer des paramètres à
votre sub.
Cette classe contiendrait des champs correspondants aux paramètres que vous
voulez passer et une méthode ne prenant aucun paramètre. Cette méthode
appelerait votre sub qui prend des paramètres en utilisant les champs de
l'objet. Ensuite vous créez votre thread en lui précisant comme fonction de
démarrage la méthode de votre objet.
Je suis pas bien sûr d'avoir été clair là :). Si vous avez des problèmes,
j'écrirais un exemple.


--
Zazar
Avatar
Bull
Bonjour et merci pour votre réponse,

Je vois à peu près la méthode et j'aurais besoin d'un exemple tout simple
avec par exemple la sub suivante :

Private Sub essai(message as String)
textbox1.text = message
End sub

Pourriez-vous juste me donner l'exemple pour la classe à utiliser pour
lancer cette sub dans une thread en lui passant en paramètre le string
message ?

Un grand merci d'avance,
Bull

"Zazar" a écrit dans le message
de news:
Bonjour,
J'aimerais pouvoir lancer une Sub à laquelle il faut passer un argument à
partir d'une thread et avoir la possibilité de stopper cette thread à
tout
moment.



Dim thread_maSub as New System.Threading.Thread(AddressOf NomDeMaSub)
thread_maSub.Start()

Avec cette première méthode, je peux bien arrêter ma thread
(thread_maSub.Suspend()), mais je ne peux pas passer un paramètre à ma
Sub.



<snip>


Vous pouvez par exemple créer une classe servant à passer des paramètres à
votre sub.
Cette classe contiendrait des champs correspondants aux paramètres que
vous
voulez passer et une méthode ne prenant aucun paramètre. Cette méthode
appelerait votre sub qui prend des paramètres en utilisant les champs de
l'objet. Ensuite vous créez votre thread en lui précisant comme fonction
de
démarrage la méthode de votre objet.
Je suis pas bien sûr d'avoir été clair là :). Si vous avez des problèmes,
j'écrirais un exemple.


--
Zazar




Avatar
Zazar
Bonsoir,

Je vois à peu près la méthode et j'aurais besoin d'un exemple tout simple
avec par exemple la sub suivante :

Private Sub essai(message as String)
textbox1.text = message
End sub

Pourriez-vous juste me donner l'exemple pour la classe à utiliser pour
lancer cette sub dans une thread en lui passant en paramètre le string
message ?



Quelque chose comme ce qui suit devrait suffire :

public class Class1
private message as string
public sub new(message as string)
this.message = message
end sub

public sub start()
essai(message)
end sub
end class

Vous lancez le thread avec comme point de départ la méthode start().
Celle-ci se contente d'appeler la méthode essai en lui passant le bon
paramètre. Si essai est une méthode d'un objet, il faudra aussi passer
l'objet à la classe Class1.
Bon courage,

--
Zazar
Avatar
Bull
Excellent, merci beaucoup !

Tu viens de me faire comprendre un problème bcp plus global du coup que
j'avais avec les threads.

Un grand grand merci

Yahhoouuuuu :-)


"Zazar" a écrit dans le message
de news: 41891941$0$19469$
Bonsoir,

Je vois à peu près la méthode et j'aurais besoin d'un exemple tout simple
avec par exemple la sub suivante :

Private Sub essai(message as String)
textbox1.text = message
End sub

Pourriez-vous juste me donner l'exemple pour la classe à utiliser pour
lancer cette sub dans une thread en lui passant en paramètre le string
message ?



Quelque chose comme ce qui suit devrait suffire :

public class Class1
private message as string
public sub new(message as string)
this.message = message
end sub

public sub start()
essai(message)
end sub
end class

Vous lancez le thread avec comme point de départ la méthode start().
Celle-ci se contente d'appeler la méthode essai en lui passant le bon
paramètre. Si essai est une méthode d'un objet, il faudra aussi passer
l'objet à la classe Class1.
Bon courage,

--
Zazar