2016-09-17 1 views
-3

이벤트가 BackgroundWorker.RunWorkerAsync()을 올바르게 실행 할 수 있습니까? 내 프로그램이 BackgroundWorker에서 코드를 실행하지 않는 것 같습니다.WebBrowser 및 BackgroundWorker VB

코드 : 나는 마침내 여기

을 작동하도록 만들

Dim Status As String = "" 
Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted 
    If Status = "Enabled" Or Status = "Disabled" Then 
    Else 
     Status = WebBrowser1.Document.GetElementById(Account & "Flag").InnerText.ToString 
     If Status = "Enabled" Then 
      BackgroundWorker1.RunWorkerAsync() 
     ElseIf Status = "Disabled" Then 
      MessageBox.Show("disabled. Contact admin for more information.", "JKLorenzo", MessageBoxButtons.OK, MessageBoxIcon.Information) 
      Close() 
     End If 
    End If 
End Sub 
+1

_Have 당신이 경우 말하는 지표의 일종을 tried_은' RunWorkerAsync()'가 실행 되었습니까? 전체적으로 [** the debugger **] (https://msdn.microsoft.com/en-us/library/mt243867.aspx)를 사용하는 방법을 배우십시오. –

+0

@VisualVincent 해결했습니다. 나는 거의 false로 설정되어 checkforillegalcrossthreadedcalls 없애 수 있도록 응용 프로그램을 recoded. 그것은 내 문제 였으므로 오류를 하나씩 수정하려고합니다. 나는 그것을했다! 그래도 고마워! –

+1

다행히 :)! 비록 당신이 처음에'CheckForIllegalCrossThreadCalls'을 False로 설정해서는 안된다 ... 나중에 참조 할 수 있도록 [** Stack Overflow documentation **]에서 thread-safety에 관한 나의 예제를 확인할 수있다. (http://stackoverflow.com /documentation/vb.net/1913/threading/6235/performing-thread-safe-calls-using-control-invoke#t=201609071725015139138). –

답변

0

내가 사용했던 코드 :

Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork 
    BackgroundWorker1.ReportProgress(10) 
    Dim mysqlconnection As MySqlConnection = New MySqlConnection("server=85.10.205.173;port=3306;username='" & User & "';password='" & Pass & "'") 
    BackgroundWorker1.ReportProgress(20) 
    Dim mysqlcommand As MySqlCommand = Nothing 
    BackgroundWorker1.ReportProgress(30) 
    Dim mysqldatareader As MySqlDataReader = Nothing 
    BackgroundWorker1.ReportProgress(40) 
    mysqlconnection.Open() 
    BackgroundWorker1.ReportProgress(50) 
    Using table As DataTable = New DataTable 
     BackgroundWorker1.ReportProgress(60) 
     Using command As MySqlCommand = New MySqlCommand("Select * from my.accounts where Username = 'Ray';", mysqlconnection) 
      BackgroundWorker1.ReportProgress(70) 
      Using adapter As MySqlDataAdapter = New MySqlDataAdapter(command) 
       BackgroundWorker1.ReportProgress(80) 
       adapter.Fill(table) 
       BackgroundWorker1.ReportProgress(90) 
      End Using 
     End Using 

     For Each row As DataRow In table.Rows 
      If row("Flag") = "enable" Then 
       e.Result = "1" 
       BackgroundWorker1.ReportProgress(100) 
      Else 
       e.Result = "0" 
       BackgroundWorker1.ReportProgress(100) 
      End If 
     Next 
    End Using 
    mysqlconnection.Close() 
End Sub 

Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged 
    If e.ProgressPercentage = 10 Then 
     Label1.Text = "Status: Checking" 
     Label1.ForeColor = Color.FromKnownColor(KnownColor.Highlight) 
    End If 
    ProgressBar1.Value = e.ProgressPercentage 
    ProgressBar1.Refresh() 
End Sub 

Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted 
    Threading.Thread.Sleep(500) 
    ProgressBar1.Value = 0 
    If e.Result = "1" Then 
     Label1.Text = "Status: Enabled" 
     Label1.ForeColor = Color.Green 
     Button1.Enabled = False 
     Button2.Enabled = True 
    ElseIf e.Result = "0" Then 
     Label1.Text = "Status: Disabled" 
     Label1.ForeColor = Color.OrangeRed 
     Button1.Enabled = True 
     Button2.Enabled = False 
    Else 
     MessageBox.Show("Unknown output: " & e.Result & " . Closing", "", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     Close() 
    End If 
End Sub