'Traitement lourd et bloquant
Threading.Thread.Sleep(4000)
'Fermeture
Form4.Close()
End Sub
cs_Domi68
Messages postés1Date d'inscriptionsamedi 10 juillet 2010StatutMembreDernière intervention29 décembre 2010 29 déc. 2010 à 10:07
Bonjour,
Merci pour ton travail.
J'ai inclus ton code à un de mes projets en cous sous VB 2010. J'ai effectué la modification indiquée ci-dessus. Tout fonctionne hormis l'instruction close qui reste sans effet même après l'arrêt du programme. Une solution ?
tovin
Messages postés164Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention14 août 20133 3 déc. 2009 à 13:22
Bonjour,
Tiens, j'ai oublié de donner la note.
tovin
Messages postés164Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention14 août 20133 1 déc. 2009 à 18:41
Lourd ? Et même lourdeau !...
patmtp35
Messages postés12Date d'inscriptionjeudi 29 octobre 2009StatutMembreDernière intervention 2 décembre 2009 1 déc. 2009 à 18:30
tovin tu es lourd...
tovin
Messages postés164Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention14 août 20133 1 déc. 2009 à 18:07
Bonjour,
A l'attention de PATMTP35, je reproduis (avec les fautes d'orthographe) ton message du 29 :
"le code de casy marche tres bien on a juste pas la meme vision qd on est le développeur ou celui qui profite du code deja ecrit pour ma part cela fonction bien a part que je n'ai aucune progression sur la barre mais ca doit pas etre grd chose ".
D'après ce que je vois, tu aurais mieux fait de profiter du code que d'être développeur.
A+
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 1 déc. 2009 à 14:15
C'est plutot étrange. Je ne comprend plus. J'ai aussi essayer sur plusieurs postes, j'arrive pas à reproduire ton problème
patmtp35
Messages postés12Date d'inscriptionjeudi 29 octobre 2009StatutMembreDernière intervention 2 décembre 2009 1 déc. 2009 à 14:12
je viens de tester ds un projet vide a mon taf avec visual studio 2008 toujours pareils snif
patmtp35
Messages postés12Date d'inscriptionjeudi 29 octobre 2009StatutMembreDernière intervention 2 décembre 2009 29 nov. 2009 à 21:53
c'est activé bas je vais voir si je chope un sample de progress bar simple voir si il fonctione
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 29 nov. 2009 à 21:42
Il faut, je crois, que les styles visuels XP soient activés dans les propriétés du projet pour que le style Marquee marche.
patmtp35
Messages postés12Date d'inscriptionjeudi 29 octobre 2009StatutMembreDernière intervention 2 décembre 2009 29 nov. 2009 à 20:55
arf coup dur je viens de le coller ds un projet vide avec un formulaire simple et ce code
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim pt As New Patientez
pt.Title = "Titre de la fenêtre"
pt.Text = "Message d'attente"
pt.Show()
System.Threading.Thread.CurrentThread.Sleep(15000)
pt.Close()
End Sub
cela affiche bien la progress barre mais rien n'avance apres elle disparait et le processu est finit...
patmtp35
Messages postés12Date d'inscriptionjeudi 29 octobre 2009StatutMembreDernière intervention 2 décembre 2009 29 nov. 2009 à 19:35
bizare doit y avoir autre chose ailleur j'ai essayer avec notepad mais trop rapide et j'ai essayer avec
System.Threading.Thread.CurrentThread.Sleep(15000) marche pas et en suprimant le windows style pareil pas de progression
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 29 nov. 2009 à 14:47
Avec ton code et en remplaçant ton processus par notepad, je ne reproduit pas ton problème :(
patmtp35
Messages postés12Date d'inscriptionjeudi 29 octobre 2009StatutMembreDernière intervention 2 décembre 2009 29 nov. 2009 à 13:35
je n'ai rien toucher a ton code a se niveau la :
Public Sub Show()
' Affichage de l'écran d'attente
EcAttente = New FormPatientez
EcAttente.Titre = _Title
EcAttente.Message = _Text
'Style fixé à Marquee, mais peu être paramétrable en créant les propriétés qui vont bien
'pour initialiser les différents paramètres
EcAttente.Style = ProgressBarStyle.Marquee
If (Not _Thread Is Nothing) Then
_Thread.Abort()
_Thread = Nothing
End If
_Thread = New System.Threading.Thread(AddressOf EcAttente.affiche)
_Thread.Start()
End Sub
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 29 nov. 2009 à 13:24
As-tu mis la propriété Style de la progressbar sur Marquee pour qu'elle bouge toute seule comme une grande ?
patmtp35
Messages postés12Date d'inscriptionjeudi 29 octobre 2009StatutMembreDernière intervention 2 décembre 2009 29 nov. 2009 à 12:23
c'est exactement ce que j'ai fait et cela marche
par contre la progress bar ne bouge pas voici ma structure dit moi ce que tu en pensse :
Private Sub Start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Start.Click
'Instantiation
Dim Wait As New Patientez
'Affichage
Wait.Title = "XtreamJ"
Wait.Text = "Processing........"
Wait.Show()
Dim OP As New ProcessStartInfo("xtreamj.exe")
OP.WindowStyle = ProcessWindowStyle.Hidden
Dim P As Process = Process.Start(OP)
P.WaitForExit()
Wait.Close()
End Sub
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 29 nov. 2009 à 12:04
Le code donné est effectivement développé avec VB2008 (VB2005 au départ mais il a été converti par la suite) et il se peut que la structure des fichiers xxxx.designer.vb soit différente entre les 2 versions.
(Je n'ai plus VB2005 pour vérifier)
Hormis ce que j'expliquais plus haut sur le problème de l'icone, et qui est un raté de ma part, le code n'est pas non plus d'une complexité absolue.
Il peut, si besoin, être recréé sous VB2005. Dans un nouveau projet, il suffit de faire un nouvel écran vierge du même nom et caractéristique que celui-ci, d'y mettre un label et une progressbar nommé comme dans celui-ci, et de recopier le code qui se trouve dans patientez.vb.
patmtp35
Messages postés12Date d'inscriptionjeudi 29 octobre 2009StatutMembreDernière intervention 2 décembre 2009 29 nov. 2009 à 11:30
le code de casy marche tres bien on a juste pas la meme vision qd on est le développeur ou celui qui profite du code deja ecrit pour ma part cela fonction bien a part que je n'ai aucune progression sur la barre mais ca doit pas etre grd chose
tovin
Messages postés164Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention14 août 20133 29 nov. 2009 à 11:09
Rebonjour,
Ma question n'était peut-être pas si idiote que tu peux le supposer : en effet, après avoir testé sous VB 2005, j'ai testé sous VB 2008. Et ça marche sous VB 2008.
Alors, ne serait-il pas nécessaire d'indiquer le programme à utiliser ?
patmtp35
Messages postés12Date d'inscriptionjeudi 29 octobre 2009StatutMembreDernière intervention 2 décembre 2009 29 nov. 2009 à 10:48
Merci ! ca a l'air d'etre cela !
tovin
Messages postés164Date d'inscriptionsamedi 11 décembre 2004StatutMembreDernière intervention14 août 20133 29 nov. 2009 à 10:37
Bonjour,
Non, le fait de supprimer la ligne Me.Icon ne change rien et j'ai toujours le bug signalé plus haut par PATMTP35.
On a toujours un arrière-goût d'insatisfaction quand on n'arrive pas à faire marcher un code: doit-il être attribué à l'ignorance du testeur ou au va-vite de l'offrant ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 29 nov. 2009 à 09:51
Oui c'est probablement parce que j'avais été obligé de supprimer le fichier Patientez.resx des fichiers distribués car il contenait une donnée que je ne pouvais pas distribuer (pb de droit). Mais il semblerait qu'il soit rester une référence vers cette données dans les autres fichiers.
Essaye d'ouvrir le fichier Patientez.Designer.vb et regarde si tu trouve la ligne suivante :
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Si elle y est, essaye de la supprimer pour voir si ça marche mieux
patmtp35
Messages postés12Date d'inscriptionjeudi 29 octobre 2009StatutMembreDernière intervention 2 décembre 2009 28 nov. 2009 à 22:49
hello
tout d'abord merci pour ton code !
j'ai essayer d'inclure ron code dans un pti bou de projet que je suis en train de realiser mais j'obtiens une erreur que j'ai du mal a corriger :
cela plante a cette ligne Private _Fermer As Boolean = False en me disant
Impossible de trouver des ressources appropriées pour la culture spécifiée ou la culture neutre. Assurez-vous que "XJ_GUI.FormPatientez.resources" a été correctement incorporé ou lié dans l'assembly "XJ GUI" au moment de la compilation ou que tous les assemblys satellites requis sont chargeables et complètement signés.
as tu une idee ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 20 nov. 2009 à 20:37
C'est un point sur lequel, je crainds malheureusement ne pas savoir répondre !
C'est problablement possible, mais dans la mesure ou justement le but était de supprimer tout lien entre les 2 processus, cela risque d'être un peu complexe.
Il doit falloir, je pense, jouer avec des delegate et des callback, mais c'est un domaine que je ne connais pas assez bien.
Si quelqu'un d'autre à des réponses qu'il les propose
zeg_
Messages postés2Date d'inscriptionvendredi 20 juillet 2007StatutMembreDernière intervention 3 mai 2013 20 nov. 2009 à 18:13
Bonjour,
Merci pour ce control qui m'a bien servi. Mais j'aimerais y ajouter un bouton ANNULER pour pouvoir mettre fin au traitement lourd s'il prenait trop de temps.
Comment m'y prendre?
Merci.
cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 mai 20154 16 sept. 2009 à 08:57
bonjour
merci pour la réponse,c'est nickel
bonne journée
petchy
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 15 sept. 2009 à 23:29
je sais bien..., tu as raison de préciser pour les autres lecteurs....
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 15 sept. 2009 à 22:32
Ben, avec le bout de code donné dans ma première réponse le projet démo est quasiment fait :D
Juste une Form, un bouton dessus, on laisse tous les paramètres par défaut, on colle le code de ma première réponse, et on execute ;)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 15 sept. 2009 à 22:11
... (pour un novice VB.NET comme moi... il a fallut moins de 40 secondes pour avoir un résultat utilisable)
casy, non pas que je pense çà utile mais bon : si tu en as envie (uniquement) joint éventuellement un projet démo :/
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 15 sept. 2009 à 21:20
TU prend les trois fichiers du zip, tu les dézippe dans le dossier de tes sources, et tu rajoute le .vb à ton projet (Ajouter/élément existant)
Ensuite tu t'inspire du code donné pour l'utilisation
cs_petchy
Messages postés710Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention19 mai 20154 15 sept. 2009 à 17:11
bonjour
je voudrais bien essayer le code,mais comment s'en servir?
merci
petchy
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 13 sept. 2009 à 22:01
salut,
System.Threading.Thread.CurrentThread.Sleep(15000) => erreur (je dois supprimer 'CurrentThread')
même en plaçant une msgbox (qui bloque donc aussi le thread) ce code semble fonctionner comme prévu. (animation fonctionnelle, refresh ok, aucun freeze)
xp sp3
vs 2008
++
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 13 sept. 2009 à 21:04
Code de test :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Instantiation
Dim test As New Patientez
'Affichage
test.Title = "TestPatientez"
test.Text = "Test de Patientez!"
test.Show()
'Traitement lourd et bloquant
System.Threading.Thread.CurrentThread.Sleep(15000)
'Fermeture
test.Close()
End Sub
Ca marche très bien chez moi !!!
astouz2000k
Messages postés50Date d'inscriptionsamedi 2 juillet 2005StatutMembreDernière intervention 2 mai 2013 13 sept. 2009 à 20:39
bonjour,
merci pour ce code mais cela ne fonctionne pas chez moi.
l'appli es figé y compris ta progressbar, je pensais que le thread solutionnerai le probleme.
si toutefois tu as une idée je suis tout ouie.
3 janv. 2013 à 13:30
'Instantiation
Dim test As New Form4
'Affichage
Form4.Title = "Patientez"
Form4.Text = ""
Form4.Show()
'Traitement lourd et bloquant
Threading.Thread.Sleep(4000)
'Fermeture
Form4.Close()
End Sub
29 déc. 2010 à 10:07
Merci pour ton travail.
J'ai inclus ton code à un de mes projets en cous sous VB 2010. J'ai effectué la modification indiquée ci-dessus. Tout fonctionne hormis l'instruction close qui reste sans effet même après l'arrêt du programme. Une solution ?
3 déc. 2009 à 13:22
Tiens, j'ai oublié de donner la note.
1 déc. 2009 à 18:41
1 déc. 2009 à 18:30
1 déc. 2009 à 18:07
A l'attention de PATMTP35, je reproduis (avec les fautes d'orthographe) ton message du 29 :
"le code de casy marche tres bien on a juste pas la meme vision qd on est le développeur ou celui qui profite du code deja ecrit pour ma part cela fonction bien a part que je n'ai aucune progression sur la barre mais ca doit pas etre grd chose ".
D'après ce que je vois, tu aurais mieux fait de profiter du code que d'être développeur.
A+
1 déc. 2009 à 14:15
1 déc. 2009 à 14:12
29 nov. 2009 à 21:53
29 nov. 2009 à 21:42
29 nov. 2009 à 20:55
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim pt As New Patientez
pt.Title = "Titre de la fenêtre"
pt.Text = "Message d'attente"
pt.Show()
System.Threading.Thread.CurrentThread.Sleep(15000)
pt.Close()
End Sub
cela affiche bien la progress barre mais rien n'avance apres elle disparait et le processu est finit...
29 nov. 2009 à 19:35
System.Threading.Thread.CurrentThread.Sleep(15000) marche pas et en suprimant le windows style pareil pas de progression
29 nov. 2009 à 14:47
29 nov. 2009 à 13:35
Public Sub Show()
' Affichage de l'écran d'attente
EcAttente = New FormPatientez
EcAttente.Titre = _Title
EcAttente.Message = _Text
'Style fixé à Marquee, mais peu être paramétrable en créant les propriétés qui vont bien
'pour initialiser les différents paramètres
EcAttente.Style = ProgressBarStyle.Marquee
If (Not _Thread Is Nothing) Then
_Thread.Abort()
_Thread = Nothing
End If
_Thread = New System.Threading.Thread(AddressOf EcAttente.affiche)
_Thread.Start()
End Sub
29 nov. 2009 à 13:24
29 nov. 2009 à 12:23
par contre la progress bar ne bouge pas voici ma structure dit moi ce que tu en pensse :
Private Sub Start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Start.Click
'Instantiation
Dim Wait As New Patientez
'Affichage
Wait.Title = "XtreamJ"
Wait.Text = "Processing........"
Wait.Show()
Dim OP As New ProcessStartInfo("xtreamj.exe")
OP.WindowStyle = ProcessWindowStyle.Hidden
Dim P As Process = Process.Start(OP)
P.WaitForExit()
Wait.Close()
End Sub
29 nov. 2009 à 12:04
(Je n'ai plus VB2005 pour vérifier)
Hormis ce que j'expliquais plus haut sur le problème de l'icone, et qui est un raté de ma part, le code n'est pas non plus d'une complexité absolue.
Il peut, si besoin, être recréé sous VB2005. Dans un nouveau projet, il suffit de faire un nouvel écran vierge du même nom et caractéristique que celui-ci, d'y mettre un label et une progressbar nommé comme dans celui-ci, et de recopier le code qui se trouve dans patientez.vb.
29 nov. 2009 à 11:30
29 nov. 2009 à 11:09
Ma question n'était peut-être pas si idiote que tu peux le supposer : en effet, après avoir testé sous VB 2005, j'ai testé sous VB 2008. Et ça marche sous VB 2008.
Alors, ne serait-il pas nécessaire d'indiquer le programme à utiliser ?
29 nov. 2009 à 10:48
29 nov. 2009 à 10:37
Non, le fait de supprimer la ligne Me.Icon ne change rien et j'ai toujours le bug signalé plus haut par PATMTP35.
On a toujours un arrière-goût d'insatisfaction quand on n'arrive pas à faire marcher un code: doit-il être attribué à l'ignorance du testeur ou au va-vite de l'offrant ?
29 nov. 2009 à 09:51
Essaye d'ouvrir le fichier Patientez.Designer.vb et regarde si tu trouve la ligne suivante :
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Si elle y est, essaye de la supprimer pour voir si ça marche mieux
28 nov. 2009 à 22:49
tout d'abord merci pour ton code !
j'ai essayer d'inclure ron code dans un pti bou de projet que je suis en train de realiser mais j'obtiens une erreur que j'ai du mal a corriger :
cela plante a cette ligne Private _Fermer As Boolean = False en me disant
Impossible de trouver des ressources appropriées pour la culture spécifiée ou la culture neutre. Assurez-vous que "XJ_GUI.FormPatientez.resources" a été correctement incorporé ou lié dans l'assembly "XJ GUI" au moment de la compilation ou que tous les assemblys satellites requis sont chargeables et complètement signés.
as tu une idee ?
20 nov. 2009 à 20:37
C'est problablement possible, mais dans la mesure ou justement le but était de supprimer tout lien entre les 2 processus, cela risque d'être un peu complexe.
Il doit falloir, je pense, jouer avec des delegate et des callback, mais c'est un domaine que je ne connais pas assez bien.
Si quelqu'un d'autre à des réponses qu'il les propose
20 nov. 2009 à 18:13
Merci pour ce control qui m'a bien servi. Mais j'aimerais y ajouter un bouton ANNULER pour pouvoir mettre fin au traitement lourd s'il prenait trop de temps.
Comment m'y prendre?
Merci.
16 sept. 2009 à 08:57
merci pour la réponse,c'est nickel
bonne journée
petchy
15 sept. 2009 à 23:29
15 sept. 2009 à 22:32
Juste une Form, un bouton dessus, on laisse tous les paramètres par défaut, on colle le code de ma première réponse, et on execute ;)
15 sept. 2009 à 22:11
casy, non pas que je pense çà utile mais bon : si tu en as envie (uniquement) joint éventuellement un projet démo :/
15 sept. 2009 à 21:20
Ensuite tu t'inspire du code donné pour l'utilisation
15 sept. 2009 à 17:11
je voudrais bien essayer le code,mais comment s'en servir?
merci
petchy
13 sept. 2009 à 22:01
System.Threading.Thread.CurrentThread.Sleep(15000) => erreur (je dois supprimer 'CurrentThread')
même en plaçant une msgbox (qui bloque donc aussi le thread) ce code semble fonctionner comme prévu. (animation fonctionnelle, refresh ok, aucun freeze)
xp sp3
vs 2008
++
13 sept. 2009 à 21:04
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Instantiation
Dim test As New Patientez
'Affichage
test.Title = "TestPatientez"
test.Text = "Test de Patientez!"
test.Show()
'Traitement lourd et bloquant
System.Threading.Thread.CurrentThread.Sleep(15000)
'Fermeture
test.Close()
End Sub
Ca marche très bien chez moi !!!
13 sept. 2009 à 20:39
merci pour ce code mais cela ne fonctionne pas chez moi.
l'appli es figé y compris ta progressbar, je pensais que le thread solutionnerai le probleme.
si toutefois tu as une idée je suis tout ouie.
merci