来自第二个模块的VB.NET backgroundworker
frmMain有一个启动后台工作程序的按钮来自第二个模块的VB.NET backgroundworker,vb.net,module,progress-bar,backgroundworker,Vb.net,Module,Progress Bar,Backgroundworker,frmMain有一个启动后台工作程序的按钮 Private Sub btnProcessITN_Click(sender As Object, e As EventArgs) Handles btnProcessITN.Click Me.frmMainProgressBar.Visible = True Me.btnProcessITN.Text = "working..." & Me.frmMainProgressBar.Value & "%" Me.b
Private Sub btnProcessITN_Click(sender As Object, e As EventArgs) Handles btnProcessITN.Click
Me.frmMainProgressBar.Visible = True
Me.btnProcessITN.Text = "working..." & Me.frmMainProgressBar.Value & "%"
Me.btnProcessITN.Enabled = False
backgroundWorker2.WorkerReportsProgress = True
BackgroundWorker2.RunWorkerAsync()
End Sub
Private Sub backgroundWorker2_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker2.DoWork
ProcessITN()
End Sub
ProcessITN生活在现代。这个运行,做它的事情,然后是问题
Public Sub ProcessITN()
...doing work here....
frmMain.updateProgress(current, Max)
End Sub
回到表单main,我有一个函数,它试图更新后台工作人员的进度,并更新表单上的进度条
Public Function updateProgress(current As Integer, Max As Integer) As Boolean
BackgroundWorker2.ReportProgress((current / Max) * 100)
Return True
End Function
Private Sub backgroundWorker2_ProgressChanged( _
ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) _ Handles BackgroundWorker2.ProgressChanged
Me.frmMainProgressBar.Value = e.ProgressPercentage
Me.btnProcessITN.Text = "working..." & Me.frmMainProgressBar.Value & "%"
'Me.txtProgress.Text = Me.txtProgress.Text & vbNewLine & strMessage
Me.txtProgress.AppendText(vbNewLine & strMessage)
End Sub
现在的问题是,尽管代码正在运行,并且值从modITN正确传递到了frmMain,但表单本身并没有刷新。进度条不会更改。txtProgress不会改变
注意:当modITN中的内容在frmMain中时,这个代码工作得很好。我移动它来整理我的代码 我已经解决了这个问题 我把backgroundworker块移到了frmMain外的modITN。整个过程现在在modITN中运行,并从那里更新进度条。frmMain只是在modITN中调用sub来启动整个过程
简单 你可能仍然可以看看这里,我有同样的问题——还有更多的问题 在我看来,VB.net的表单“默认实例”是一个可怕的陷阱