cerbere53
Messages postés4Date d'inscriptionmardi 30 mai 2006StatutMembreDernière intervention26 juillet 2008
-
17 mars 2008 à 21:41
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024
-
19 mars 2008 à 10:39
Bonjour voila mon probleme : dans mon programme il y a une boucle qui génere un bug de type pas de reponse lors de l'exécution , je suis au desespoir j'ai essayé avec différents types de boucles ainsi qu'avec différentes commandes plus classique pour fermer le processus .
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Do While CheckBox1.Checked
Sleep(3000)
Try
Shell("TSKILL vlc", vbHide)
Catch
End Try
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 18 mars 2008 à 07:50
salut,
ajoute application.doevents sous ton sleep Q : [doc/faq.aspx#vb_doevents Code : Mon application freeze lors d'une
longue opération, comment y rémedier]
celà dit c'est pas propre.... travailler jusqu'à ce que ton utilisateur décoche.....
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 19 mars 2008 à 10:39
Bonjour
Pour le thread, voir un BackGoundSWorker (controle) ou la classe Thread (System.Threading.Thread). Pour les infos complémentaires (Aide sur ces 2 options), voir MSDN, tout y est.
Pour utiliser Ctrl+Alt, il faut shunter les procédures habituelles (pas d'interception, mais j'ai un doute concernant KeyDown et KeyUp, il faudras mettre KeyPreview (de la form) à True et intercepter les events KeyDown et KeyUp) mais là si il faut passer par les APIs ou hooking, ça sort de mes comptétences (avec .NET, on n,'a pratiquement plus besoin des APIs).
Nous captons le cockpit coupable qui a capoté
VB (6, .NET1&2), C++, C#.Net1
Mon site
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 18 mars 2008 à 08:55
Bonjour
Tu es en .NET.
Ton code :
Do While CheckBox1.Checked
Sleep(3000)
Try
Shell("TSKILL vlc", vbHide)
Catch
End Try
Loop
Ton code freeze ton app car tant que CheckBox1 (évite les noms par défaut) est coché, tu fais une pause de 3 secondes (donc, pas de possibilité de changer l'état de CheckBox1 et bloque ton app pendant 3 secondes), puis killer VLC (préfère voir du coté de System.Diagnostics.Process pour gérer les process).
Dans ton cas, soit un Timer (3 secondes c'est long) ou un thread (pour gérer plusieurs nettoyages) seront plutot conseillés.
Nous captons le cockpit coupable qui a capoté
VB (6, .NET1&2), C++, C#.Net1
Mon site
cerbere53
Messages postés4Date d'inscriptionmardi 30 mai 2006StatutMembreDernière intervention26 juillet 2008 18 mars 2008 à 18:44
Merci beaucoup pour votre rapidité ! pour information mon code n'est pas propre car j'ai tester un maximum de solution avant de me resigner a essayer le dos ...De plus sans mettre de pause le bug apparaissait quand meme, il est dû a la boucle .
Ceci dit j'aimerai plus d'information sur le thread afin de remplacer cette vilaine pause ainsi que des informations sur une boucle qui exécute le code jusqu'a ce que l'utilisateur appui sur une touche.
voici mon nouveau code :
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub KillProcessus(ByVal vlc As String)
Dim p() As Process
Dim r As Process
p = Process.GetProcessesByName("vlc")
For Each r In p
r.CloseMainWindow()
r.Kill()
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Do While CheckBox1.Checked
Sleep(3000)
Application.DoEvents()
Try
KillProcessus("vlc")
Catch
End Try
Loop
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
cerbere53
Messages postés4Date d'inscriptionmardi 30 mai 2006StatutMembreDernière intervention26 juillet 2008 18 mars 2008 à 21:29
Voila pour remplacer la textbox j'aimerai mettre un bouton avec un raccourci clavier afin que quand l'utilisateur tape ctrl alt a la boucle s'arrete mais je n'ai pas trouver comment faire quelqu'un pourrait il m'éclairer ?