专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VB Dotnet

vb.net BackgroundWorker组件使用有关问题

发布时间:2011-06-23 14:05:05 文章来源:www.iduyao.cn 采编人员:星星草
vb.net BackgroundWorker组件使用问题
下面代码中Me.ProgressBar1.Value = e.ProgressPercentage不同步完成DoWork事件进度。
奇怪的是当DoWork事件没有完成的情况下进度条很快进度到早就完成结束显示100%呢


 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Me.BackgroundWorker1.RunWorkerAsync()
        Me.BackgroundWorker1.WorkerReportsProgress = True
        Me.BackgroundWorker1.ReportProgress(100)
        MsgBox("以启动运行程序。。。")
    End Sub

    Private Sub backgroundWorker1_RunWorkerCompleted( _
  ByVal sender As Object, _
  ByVal e As EventArgs) _
  Handles BackgroundWorker1.RunWorkerCompleted
        'Thread.Sleep(10000)
        Me.TextBox1.Text = "ok"
    End Sub

    Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Thread.Sleep(1000000)
    End Sub

    Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
        Me.ProgressBar1.Value = e.ProgressPercentage
    End Sub
End Class


------解决方案--------------------
BackgroundWorker.ReportProgress 方法的作用是引发 ProgressChanged 事件,你的ReportProgress(100)只是告诉BackgroundWorker在运行完之后引发ProgressChanged 事件而已,并不能让msgbox等到运行结束
直接把msgbox放进RunWorkerCompleted,或者在ProgressChanged 事件发生时msgbox应该就行了吧
------解决方案--------------------
楼主的代码没有实质的处理内容,只是学习的目的么?
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: