【问题标题】:VB.NET backgroundworker from a second module来自第二个模块的 VB.NET 后台工作人员
【发布时间】:2013-07-04 20:59:31
【问题描述】:

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.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 存在于 modITN 中。这运行,做它的事,然后问题

Public Sub ProcessITN()
...doing work here....
    frmMain.updateProgress(current, Max)       
End Sub

回到主窗体我有一个函数尝试更新后台工作人员的进度,并更新窗体上的进度条

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 中时,此代码运行良好。我移动它以尝试整理我的代码。

【问题讨论】:

    标签: vb.net module progress-bar backgroundworker


    【解决方案1】:

    您可能仍然看这里,我也有同样的问题 - 并且还有更多问题。

    Multithreading for a progressbar and code locations (vb.net)?

    在我看来,VB.net 的表单“默认实例”是一个可怕的陷阱。

    【讨论】:

      【解决方案2】:

      我已经解决了这个问题!

      我将 backgroundworker 块移到 modITN,移出 frmMain。整个事情现在在 modITN 中运行,并从那里更新进度条。 frmMain 只是调用 modITN 中的 sub 来启动整个过程。

      简单!

      【讨论】:

        猜你喜欢
        • 2016-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-27
        • 1970-01-01
        • 2017-01-21
        • 1970-01-01
        相关资源
        最近更新 更多