Thread.Abort ne fonctionne pas

OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 - 11 avril 2007 à 22:32
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 - 12 avril 2007 à 19:01
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

12 réponses

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

Redman
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
12 avril 2007 à 07:59
On saurait pas vraiment t'aider comme ça, donne nous ton code...

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

Redman
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
12 avril 2007 à 09:06
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
12 avril 2007 à 10:13
Je met jamais de Sleep d'habitude et ca marche mais pourquoi mettre un sleep ?

Redman
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
12 avril 2007 à 15:39
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.
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
12 avril 2007 à 15:46
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
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
12 avril 2007 à 16:03
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.
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
12 avril 2007 à 18:23
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
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
12 avril 2007 à 18:30
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.
0
OneHacker Messages postés 1447 Date d'inscription jeudi 2 novembre 2000 Statut Membre Dernière intervention 23 septembre 2007 2
12 avril 2007 à 18:34
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
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
12 avril 2007 à 19:01
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.
0
Rejoignez-nous