Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arreter un Handler lors d'un clic Possible ??

    27 juillet 2020 à 16:11:29

    Bonjour,

    J'aimerai lorsque je clique sur le bouton_5  arrêter le fonctionnement de la Sub TransfertRobocopy_TextBox_Multiline_Source ainsi que le handler associer.

    Avez-vous une idée de comment si prendre, voici mon code:

    Dim Statut_Transfert_Personnalise As Boolean = False
    Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    Statut_Transfert_Personnalise = True
    'Lorsque je clic sur ce bouton arreter -> AddHandler proc2.OutputDataReceived, AddressOf Async_Data_Received_TextBox_Multiline_Source End Sub Private Sub TransfertRobocopy_TextBox_Multiline_Source(ByVal Source As String, ByVal Destination As String) Dim procInfo2 As New ProcessStartInfo Dim proc2 As New Process procInfo2.FileName = "C:\Windows\System32\cmd.exe" procInfo2.Arguments = "/k Robocopy " & Cible procInfo2.WindowStyle = ProcessWindowStyle.Hidden ' Sert à cacher la fenetre cmd robocopy lors du transfert procInfo2.UseShellExecute = False procInfo2.RedirectStandardError = True procInfo2.RedirectStandardOutput = True procInfo2.RedirectStandardInput = True procInfo2.CreateNoWindow = True procInfo2.StandardOutputEncoding = System.Text.Encoding.GetEncoding(850) procInfo2.StandardErrorEncoding = System.Text.Encoding.GetEncoding(850) proc2.StartInfo = procInfo2 proc2.EnableRaisingEvents = True proc2.Start() AddHandler proc2.ErrorDataReceived, AddressOf Async_Data_Received_TextBox_Multiline_Source AddHandler proc2.OutputDataReceived, AddressOf Async_Data_Received_TextBox_Multiline_Source proc2.BeginOutputReadLine() proc2.BeginErrorReadLine() End Sub Private Delegate Sub InvokeWithString_TextBox_Multiline_Source(ByVal text As String) Private Sub Async_Data_Received_TextBox_Multiline_Source(ByVal sender As Object, ByVal e As DataReceivedEventArgs) Invoke(New InvokeWithString_TextBox_Multiline_Source(AddressOf Sync_Output_TextBox_Multiline_Source), e.Data) End Sub Private Sub Sync_Output_TextBox_Multiline_Source(ByVal text As String) If Statut_Transfert_Personnalise = False Then TxtSource_PnlMigration.AppendText(text & Environment.NewLine) TxtSource_PnlMigration.ScrollToCaret() Else Exit Sub End If End Sub



    -
    Edité par ffdu69 27 juillet 2020 à 16:16:40

    • Partager sur Facebook
    • Partager sur Twitter
      27 juillet 2020 à 16:19:33

      Bonjour

      Fait tourner dans un thread.Tu pourras stopper le thread et intercepter l'exception nécessaire pour faire les traitement supplémentaires au moment de l'arrêt.

      • Partager sur Facebook
      • Partager sur Twitter
        27 juillet 2020 à 16:42:04

        A tu un exemple a me proposer en utilisant mon code.. Merci de ta reponse
        • Partager sur Facebook
        • Partager sur Twitter
          27 juillet 2020 à 17:23:46

          Il faut que tu conserves quelque part une trace du process que tu lances (enregistrer son id par exemple) et ensuite, réutiliser cette information pour stopper le process (pour l'id, avec Process.GetProcessById(id).CloseMainWindow() ou plus brutalement Process.GetProcessById(id).Kill())
          • Partager sur Facebook
          • Partager sur Twitter
            28 juillet 2020 à 11:44:31

            J'ai deja essayé cela Process.GetProcessById(id).CloseMainWindow() ou plus brutalement Process.GetProcessById(id).Kill())

            mais sa ne fonctionne pas. Robocopy continu toujours de se lancer..

            • Partager sur Facebook
            • Partager sur Twitter
              28 juillet 2020 à 12:01:20

              Pourrais tu nous montrer ton code ?

              Lance-tu bien robocopy depuis un autre thread

              • Partager sur Facebook
              • Partager sur Twitter
                28 juillet 2020 à 14:08:17

                Mon code est dans le premier commentaire
                • Partager sur Facebook
                • Partager sur Twitter
                  28 juillet 2020 à 15:31:34

                  et ton code avec getprocessbyid qui ne marche pas ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 août 2020 à 0:57:25

                    Robocopy est un outil d'installation plutôt rustique.

                    Pourquoi ne pas utiliser des outils plus modernes comme les MSI ?

                    Ils permettent des mécanismes d'interruptions plus simples et plus fiables.

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                      12 octobre 2020 à 8:50:49

                      Salut bacelar, Les MSI c'est quoi ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 octobre 2020 à 11:45:59

                        https://fr.wikipedia.org/wiki/Windows_Installer
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

                        Arreter un Handler lors d'un clic Possible ??

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown