2016-09-17 32 views
-3

一个WebBrowser.DocumentCompleted事件可以执行BackgroundWorker.RunWorkerAsync()是否正确?因为我的程序似乎没有执行BackgroundWorker下的代码。web浏览器和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()'是否运行?总而言之,开始学习如何使用[**调试器**](https://msdn.microsoft.com/en-us/library/mt243867.aspx)。 –

+0

@VisualVincent我已经解决了它。我几乎重新编写应用程序,以便我可以摆脱之前设置为false的checkforillegalcrossthreadedcalls。那是我的问题,所以我试着逐个修正错误,并且万岁!我做的!虽然谢谢! –

+1

很高兴听到:)!虽然你应该从未将'CheckForIllegalCrossThreadCalls'设置为False ...为了将来的参考,你可以在[** Stack Overflow documentation **]上检查我的关于线程安全的示例(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