Private Sub ExempleBGW() ProgressBar1.Visible = True Dim bgw As New BackgroundWorker() bgw.WorkerReportsProgress = True 'necessaire pour envoyer l'avancement du calcul AddHandler bgw.ProgressChanged, AddressOf Bgw_ProgressChanged AddHandler bgw.DoWork, AddressOf Bgw_DoWork 'abonne le BGW à la méthode qui fera le travail de fond. AddHandler bgw.RunWorkerCompleted, AddressOf Bgw_RunWorkerCompleted 'abonne le BGW à la méthode qui sera éxécutée quand le travail sera finit bgw.RunWorkerAsync() 'Démarre le travail de fond End Sub Private Sub Bgw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Dim proc As New Process proc.StartInfo.FileName = "ExeLong.exe" proc.StartInfo.CreateNoWindow = True proc.Start() Dim i As Integer = 0 While proc.HasExited = False i += 1 'on déclenche un évènement avec les informations de progression et de travail (en l'état un char) CType(sender, BackgroundWorker).ReportProgress(i) If i = 100 Then i = 0 Thread.Sleep(500) End While e.Result = "C'est fini!" 'définit un resultat End Sub Private Sub Bgw_ProgressChanged(ByVal sender As Object, ByVal e As ProgressChangedEventArgs) ProgressBar1.Value = e.ProgressPercentage 'affiche le pourcentage dans une progressbar End Sub Private Sub Bgw_RunWorkerCompleted(ByVal sender As Object, ByVal e As RunWorkerCompletedEventArgs) ProgressBar1.Visible = False MessageBox.Show(CStr(e.Result)) End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
proc.WaitForExit()
Private Sub Btn_test_Click(sender As Object, e As EventArgs) Handles btn_test.Click Dim psi As New ProcessStartInfo psi.WorkingDirectory = "C:\Users\Guigs\Test" psi.FileName = "C:\Users\Guigs\Test1.exe" psi.CreateNoWindow = True externalProcess = Process.Start(psi) ProgressBar1.Show() End Sub Private Sub externalProcess_Exited(sender As Object, e As EventArgs) Handles externalProcess.Exited ProgressBar1.Hide() externalProcess.Dispose() externalProcess = Nothing MessageBox.Show("Process complete") End Sub
proc.WaitForExit()