Utilisateur anonyme
-
5 mars 2007 à 22:41
cs_Usaf
Messages postés9Date d'inscriptionvendredi 13 avril 2007StatutMembreDernière intervention 4 août 2008
-
19 août 2007 à 11:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Usaf
Messages postés9Date d'inscriptionvendredi 13 avril 2007StatutMembreDernière intervention 4 août 2008 19 août 2007 à 11:23
Mais il y a une manière de surmonter ce blocage?
mickeyrr
Messages postés1Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention 4 avril 2007 4 avril 2007 à 01:28
ok
cs_Crazyht
Messages postés1522Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention21 août 20108 9 mars 2007 à 21:18
En fait .NET 1.x, permettait ce genre de manipulations. Ce qui posait d'enormes probleme de synchronisation inter thread souvent tres long a detecter. J'approuve donc la decision de bloquer ce genre d'operations en mode standard
d'apres ce que j'avais compris un thread ne peux pas avoir d'interaction avec des controle a moins d'avoir un delegate alors je pige plus avec ce controle !
exemple tu fait la meme choses que ton code sauf que toolStripStatusLabel1.Text, tu le remplace par ton Textbox1.Text et la tu as une belle execption d'inter-threads et la le msdn dit exactement ce que j'avais avant .... il faut un delegate !
extrait du msdn
_______________________________________
La façon par défaut d'implémenter le multithreading dans votre application est d'utiliser le composant BackgroundWorker. Le composant BackgroundWorker utilise un modèle événementiel pour le multithreading. Le thread de travail exécute votre gestionnaire d'événements DoWork, et le thread qui crée vos contrôles exécute vos gestionnaires d'événements ProgressChanged et RunWorkerCompleted. Veillez à n'appeler aucun de vos contrôles depuis votre gestionnaire d'événements DoWork.
cs_Crazyht
Messages postés1522Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention21 août 20108 8 mars 2007 à 22:17
"je comprend encore moins pourquoi tu n'as pas d'exeption avec le toolStripStatusLabel1.Text, là je capte vraiment pas !"
J'ai telechargé les sources, j'ai executé les fichiers un par un ... au cas ou !
ça na pas fonctionné, j'ai VS 2003 et VS 2005
aujourd'huit au boulot (meme condition avec les deux VS 03/05) je re-telecharge les sources, la permiere chose que je fait c'est evidament d'executer le fichier "WindowsApplication2.vbproj" et la suprise ça fonctionne ... peut etre fatiguer l'autre jours quand j'ai voulu voir ton code ou alors j'ai un probleme :) !
ce que je comprend pas trop dans ton code c'est a quoi sers ton TextBox1 ?
et je comprend encore moins pourquoi tu n'as pas d'exeption avec le toolStripStatusLabel1.Text, là je capte vraiment pas !
j'ai quand meme fait une petite modification sur le code que tu as donné
Dans le DoWork
______________________________________________________________
Dim w As BackgroundWorker = CType(sender, BackgroundWorker)
Dim ping As New System.Net.NetworkInformation.Ping()
For i As Integer = 0 To 10
w.ReportProgress(CInt(ping.Send("10.xxx.xxx.xxx").RoundtripTime.ToString()))
System.Threading.Thread.Sleep(500)
If i = 10 Then
backgroundWorker1.CancelAsync()
End If
Next
__________________________________________________________________
Puis dans le progress
__________________________________________________________________
textBox1.Text += "Ping : " & e.ProgressPercentage.ToString & " ms" & vbCrLf
__________________________________________________________________
J'suis bien content de voir des exemples de ce composant car il y a pas mal de choses qui m'echape, j'espere en voir d'autre
Merci
www.troxsa.info :)
cs_Crazyht
Messages postés1522Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention21 août 20108 8 mars 2007 à 00:18
Le Sln n'est pas obligatoire, il suffit d'ouvrir le fichier VBProj.
Comme quoi, avant de crier au loup, il faut s'assurer qu'il sagit bien d'un loup et non d'un chiot...
Sinon j'ai bien downloader le zip avant de poser la question, et tout fonctionne comme prevu.
19 août 2007 à 11:23
4 avril 2007 à 01:28
9 mars 2007 à 21:18
9 mars 2007 à 08:59
9 mars 2007 à 01:23
8 mars 2007 à 23:42
exemple tu fait la meme choses que ton code sauf que toolStripStatusLabel1.Text, tu le remplace par ton Textbox1.Text et la tu as une belle execption d'inter-threads et la le msdn dit exactement ce que j'avais avant .... il faut un delegate !
extrait du msdn
_______________________________________
La façon par défaut d'implémenter le multithreading dans votre application est d'utiliser le composant BackgroundWorker. Le composant BackgroundWorker utilise un modèle événementiel pour le multithreading. Le thread de travail exécute votre gestionnaire d'événements DoWork, et le thread qui crée vos contrôles exécute vos gestionnaires d'événements ProgressChanged et RunWorkerCompleted. Veillez à n'appeler aucun de vos contrôles depuis votre gestionnaire d'événements DoWork.
8 mars 2007 à 22:17
Pourquoi quelle exception attendais tu ?
8 mars 2007 à 13:56
ça na pas fonctionné, j'ai VS 2003 et VS 2005
aujourd'huit au boulot (meme condition avec les deux VS 03/05) je re-telecharge les sources, la permiere chose que je fait c'est evidament d'executer le fichier "WindowsApplication2.vbproj" et la suprise ça fonctionne ... peut etre fatiguer l'autre jours quand j'ai voulu voir ton code ou alors j'ai un probleme :) !
ce que je comprend pas trop dans ton code c'est a quoi sers ton TextBox1 ?
et je comprend encore moins pourquoi tu n'as pas d'exeption avec le toolStripStatusLabel1.Text, là je capte vraiment pas !
j'ai quand meme fait une petite modification sur le code que tu as donné
Dans le DoWork
______________________________________________________________
Dim w As BackgroundWorker = CType(sender, BackgroundWorker)
Dim ping As New System.Net.NetworkInformation.Ping()
For i As Integer = 0 To 10
w.ReportProgress(CInt(ping.Send("10.xxx.xxx.xxx").RoundtripTime.ToString()))
System.Threading.Thread.Sleep(500)
If i = 10 Then
backgroundWorker1.CancelAsync()
End If
Next
__________________________________________________________________
Puis dans le progress
__________________________________________________________________
textBox1.Text += "Ping : " & e.ProgressPercentage.ToString & " ms" & vbCrLf
__________________________________________________________________
J'suis bien content de voir des exemples de ce composant car il y a pas mal de choses qui m'echape, j'espere en voir d'autre
Merci
www.troxsa.info :)
8 mars 2007 à 00:18
Comme quoi, avant de crier au loup, il faut s'assurer qu'il sagit bien d'un loup et non d'un chiot...
Sinon j'ai bien downloader le zip avant de poser la question, et tout fonctionne comme prevu.
Cordialement
7 mars 2007 à 16:02
"sln" (file solution non ?)
5 mars 2007 à 22:55
5 mars 2007 à 22:41
ta sources est incomplette !
pourrais tu mettre toute ta source stp ?
@+