2014-04-28 6 views
0

J'ai deux boutons Démarrer le bouton et le bouton Stop .J'exécuter mon programme en cliquant sur le bouton Démarrer. Je veux arrêter le programme pendant le bouton de démarrage. Mais le programme ne répondra pas jusqu'à ce que le but de départ finisse son travail. Comment je peux faire vérifier le buttun d'arrêt pendant le début. J'ai entendu parler de threading mais je ne sais pas comment je peux le faire.Bouton Cliquez sur événement dans un autre

Private Sub Button_Start (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    //my code 
    //check always if the user push stop if no continue if yes go to this sub 
    //my code 
end sub 

Private Sub Button_Stop (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 
    stopClick = True 
    Dim Response As Integer 
    Response = MessageBox.Show("Do you really want to exit?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) 
    If Response = vbYes Then 
    Me.Close() 
    End If 
End Sub 
+0

Vous avez besoin de quatre espaces pour mettre en retrait vos blocs de code sur ce site. Essayez de nommer vos contrôles. Est-ce que Button1 démarre? Est-ce que Button3 s'arrête? – LarsTech

+0

oui Button1 est de commencer et Button3 est d'arrêter – user3556795

+0

@ user3556795 Avec tout le respect dû: Pourquoi déclarez-vous 'Response' en tant que [Entier] (http://msdn.microsoft.com/en-us/library/06bkb8w2.aspx) , attribuez-lui un [DialogResult] (http://msdn.microsoft.com/en-us/library/system.windows.forms.dialogresult (v = vs.110) .aspx) et le comparez à un [MsgBoxResult] (http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.msgboxresult(v=vs.110).aspx)? –

Répondre

0

Vous pouvez utiliser le filetage put button1 dans une fonction et utiliser le fil.
vous pouvez vous référer à cet exemple

'Thread created to handle the Background process for start_function 
Dim t As System.Threading.Thread 

Private Sub start_function() 
    While True 
     'your code here for Eg: 
     Dim i As Integer 
     i = i + 1 
    End While 

End Sub 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    t = New System.Threading.Thread(AddressOf Me.start_function) 
    t.Start() 

End Sub 

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 
    t.Abort() 
End Sub 
+0

En fait je suis nouveau dans ce domaine je ne pouvais pas savoir comment je peux l'utiliser :( – user3556795

+0

désolé j'ai eu cette erreur comment je peux le réparer Opération croisée pas valide: Contrôle 'Chart1' accédé à partir d'un fil autre que le fil il a été créé le. – user3556795

0

Faites glisser un composant BackgroundWorker sur votre formulaire.

Imports System.ComponentModel 

Public Class Form1 

Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click 
    Me.Text = "Busy Doing Work" 

    BackgroundWorker1.WorkerSupportsCancellation = True 
    BackgroundWorker1.RunWorkerAsync() 
End Sub 

Private Sub btnStop_Click(sender As Object, e As EventArgs) Handles btnStop.Click 
    Me.Text = "Asking to Cancel" 
    BackgroundWorker1.CancelAsync() 
End Sub 

Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork 
    While Not BackgroundWorker1.CancellationPending 
     System.Threading.Thread.Sleep(1000) 
    End While 
End Sub 


Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted 
    Me.Text = "Cancelled" 
End Sub 

End Class 
Questions connexes