Problème de Thread qui ne fonctionne pas

Problème de Thread qui ne fonctionne pas - C#/.NET managed - Programmation

Marsh Posté le 13-06-2007 à 18:44:12    

Bonjour à tous!

 

J'ai un petit soucis avec les Thread et j'aimerais votre aide pour le réglé.

 

Résumé rapide :
J'aimerais pouvoir faire un ping tout les 5 secondes à l'aide d'un thread pour éviter que mon application bloque pendant le ping.

 

Le problème :
Même avec le thread, mon application bloque toujours (Vérification faite lorsque j'enleve la fonction).

 

Mon code :

 

Je déclare mon thread :

Code :
  1. static Thread T;
 

Au démarrage de mon application :

Code :
  1. private void fenetre_Load(object sender, EventArgs e)
  2.         {
  3.             T = new Thread(new ThreadStart(PingServeur));
  4.             T.Start();
  5.         }
 

A l'aide d'un timer, le ping se fait toute les 5 secondes :

Code :
  1. private void timerPingServeur_Tick(object sender, EventArgs e)
  2.         {
  3.             PingServeur();
  4.         }
 

Quand je quitte le programme :

Code :
  1. private void fenetre_FormClosed(object sender, FormClosedEventArgs e)
  2.         {
  3.             Deconnecter();
  4.             T.Abort();
  5.         }


Message édité par cvex le 13-06-2007 à 19:29:45

---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
Reply

Marsh Posté le 13-06-2007 à 18:44:12   

Reply

Marsh Posté le 13-06-2007 à 19:37:09    

on peut voir le code de PingServeur stp ? je soupçonne un manque de Thread.Sleep() quelque part...

Reply

Marsh Posté le 13-06-2007 à 19:47:00    

Fonction PingServeur() :

Code :
  1. private void PingServeur()
  2.         {
  3.             string Serveur = "free.fr";
  4.             Ping pServeur = new Ping();
  5.             try
  6.             {
  7.                 PingReply reponseDuServeur = pServeur.Send(Serveur, 1500);
  8.                 barrePing.Text = "Ping : " + reponseDuServeur.RoundtripTime.ToString() + " ms";
  9.             }
  10.             catch
  11.             {
  12.                 barrePing.Text = "Ping : 0 ms";
  13.             }
  14.         }
 

On est obligé de mettre un Thread.Sleep ???


Message édité par cvex le 13-06-2007 à 19:48:06

---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
Reply

Marsh Posté le 13-06-2007 à 20:53:43    

En fait, t'as même pas besoin de Thread poui envoyer un ping asynchrone, vu que la classe Ping que tu utilises possède une méthode SendAsync().
 
Voir ici pour plus d'infos : http://msdn2.microsoft.com/fr-fr/l [...] S.80).aspx

Reply

Marsh Posté le 13-06-2007 à 21:20:33    

je teste tout de suite!


---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
Reply

Marsh Posté le 13-06-2007 à 22:27:25    

Ba je n'arrive pas à utiliser la méthode SendAsync() :s


---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
Reply

Marsh Posté le 14-06-2007 à 10:32:16    

barrePing ne serait-il pas un controle Windows Forms à tout hasard ? [:cerveau paysan]


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed