Thread.Abort ne fonctionne pas

Signaler
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
-
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
-
Je programme en VB.NET avec VS.NET 2003.
J'utilise souvent les threads. par exemple ce code :

Public t as new threading.thread(addressof MySub) ' déclaré publiquement dans le formulaire.
Le code d'un évènement bouton Start : t.Start()

Sub MySub
' Code de la procédure appelé par le thread
End Sub

lorsqu'avec un bouton stop je met dans le code de l'évenement click : t.Abort()

Lorsque je clique sur le bouton Stop je n'ai aucune erreur avec le code t.Abort() mais Le processus continue.

Sauriez-vous m'aidez s'il vous plaît ?

Redman
A voir également:

12 réponses

Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
1
J'ai aussi un problème avec Timer.Stop ou Timer.Enabled = False qui marche pas !

Redman
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
On saurait pas vraiment t'aider comme ça, donne nous ton code...

<hr size="2" width="100%" />Julien.
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
1
C'est à dire que c'est un début code de Hacking MSN je sais pas si c'est toléré

Redman
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
Ben à toi de voir ce que tu veux mettre ^^...
Mais de ttes facon je peux rien te dire comme ça, moi si je mets

Sub MySub
  ...
  ...
  Threading.Thread.Sleep(0)
  ...
End sub

t.start
...
t.abort

Ca marche sans problème (j'imagine que tu as bien mis le sleep ?)
Donc c'est que ton problème est autre part...

<hr size="2" width="100%" />Julien.
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
1
Je met jamais de Sleep d'habitude et ca marche mais pourquoi mettre un sleep ?

Redman
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
Pour que le thread en cours passe la main à l'autre thread, sinon quel intérêt de faire du multithreading...

<hr size="2" width="100%" />Julien.
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
1
Le thread en cours passe jamais la main à l'autre puiseque c'est du multithreading et sleep n'a rien à voir avec. Si tu regardes ma source de météto tu verras par toi même.

Redman
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
Mais non enfin, ton processeur ne peut pas exécuter deux threads à la fois ! Ne crois pas que tes threads sont exécutés continuellement en parallèles ! Regarde les exempleset le tutos microsoft !
Pour que ton processeur passe d'un thread à l'autre, tu dois utiliser Threading.Thread.Sleep(0) indiquant que si un autre thread du processus à une demande de code à exécuter sur le feu, il peu le faire...
Et encore ici aussi :
http://dotnetjunkies.com/WebLog/jdixon/archive/2004/09/27/26934.aspx

Et pour finir, si ton thread ne passe jamais la main, mais quel intéret de faire du multithreading ??! Fais simplement exécuter ta méthode par ton thread principal et éventuellement met un DoEvents dans la boucle si tu veux que l'utilisateur puisse appuyer sur un bouton pour l'arrêter...

<hr width="100%" size="2" />Julien.
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
1
Excuse moi mais j'utilise plusieurs threads parallèlement d'habitude sur un seul processus.
Par exemple pour le MailBomber pour augmenter la vitesse d'envoi.

Redman
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
Lol et en quoi ça va plus vite ???
Ce n'est pas parce qu'un processus possède plusieurs Threads que windows va lui attribuer plus de cycles, ça ne change absolument rien...
Si tu fais 100 Threads dans 100 méthode en parallèles sans instructions d'arrêts ou de pause quelconques, les 100 Threads exécuteront leurs méthodes les une après les autres, le suivant devant attendre que le précédant aie fini, exactement comme si tu les avait exécuté en une fois avec un seul Thread...
Regarde les exemple de microsoft, il y a des sleep(0), et puisqu'ils ont concu le framework, on peut quand même penser qu'ils savent de quoi ils parlent, non ?

<hr size="2" width="100%" />Julien.
Messages postés
1447
Date d'inscription
jeudi 2 novembre 2000
Statut
Membre
Dernière intervention
23 septembre 2007
1
Pas du tout, et en quoi ca va plsu vite ? par exemple j'envoi 100 mails avec 1 thread ca va à 5mails/s par exemple et si je met 10 threads ca multiplie la vitesse par dix mais il faut limiter le nombre de threads pour pas saturer autrement ca prendrait trop de mémoire donc je met 5 threads pour être raisonnable.

Redman
Messages postés
883
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
3 mars 2009
6
Et tu crois que la vitesse d'envoi de mail est limitée par ton processeur ?
Bon écoute, tu me broute, si tu veux pas essayer ce que je te dis, ne fais rien, moi je m'en f***...
a+
<hr width="100%" size="2" />Julien.