none
Problème lors du refresh de la form RRS feed

  • Question

  • Bonjour.

    Alors voilà, j'ai créé une form où l'usager, en cliquant sur un boutton, démarre un programme externe.  En fait, le boutton appelle un .bat et le .bat lance l'autre programme.  Au lieu de fermer bêtement ma form, j'ai ajouté une progress bar pour laisser savoir à l'usager qu'il y a quelque chose qui ce passe.

    Le problème est le suivant ; Apres avoir cliqué sur le bouton, dès que je clique de nouveau sur la form, la form et tout le reste gèle.  Le programme externe se charge correctement, mais il n'est plus possible de voir la progressbar et la form, presque tout devient blanc...

    J'aimerais savoir le bon moyen de faire un refresh à ma form pour toujours être en mesure de voir la progres bar sur ma form meme lorsque je clique de nouveau ou si la form perd le focus

    Voici mon code :


    Extrait de code

    Dim shell As Process

    shell = New Process()
    shell.StartInfo.FileName = "The name of the .bat file"
    shell.StartInfo.Arguments = "some parameters"
    shell.Start()

    Dim p As Process
    Dim millisecond As Integer = 0

    While True

    If millisecond >= 60000 Then
         MsgBox("Unable to load the software, try again", MsgBoxStyle.Information)
         Exit Sub
    End If


         If ProgressBarLauncher.Value = 1000 Then
         ProgressBarLauncher.Increment(-1000)

         End If
         Try

         For Each p In Process.GetProcesses()
              If p.ToString().IndexOf("TheSoftwareIAmLookingFor") > 0 Then
                   ProgressBarLauncher.Increment(1000)
                   Exit Sub
              End If

              ProgressBarLauncher.Increment(1)
              System.Threading.Thread.Sleep(20)
              millisecond += 20
    Next p

         Catch e As Exception
         MsgBox(e.ToString(), MsgBoxStyle.Critical)
         End
    End Try

    End While
    shell.Close()



    Voilà en gros ce que fait ce code :

       1. La variable shell démarre le .bat
       2. Je lis les processus
       3. Si le logiciel que je recherche est dans la liste des processus actif, je remplis la progress bar et je fais exit sub
       4. Si le logiciel n'est pas encore chargé, j'incrémente un peu la progress bar et je retourne au numéro 2

    Comme je disais, l'affichage fonctionne parfaitement si je ne reclique pas sur la form et si la form ne perd pas le focus.  J'ai déja essayé de faire des refresh sur la form et sur le progress bar mais cela na rien donné, j'ai le même résultat

    Merci pour les suggestions!

    Pierre-Luc

    mardi 22 janvier 2008 15:19

Réponses

Toutes les réponses