十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
有不是多线程的,.NET有一个异步控件来完成这个事情,BackgroundWorker。
沁水网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。创新互联建站自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
多线程其实比你想象的简单,你计划操作步骤,打比方说我们处理一个文件,用进度条来显示进度。我们可以定义解压他进度为5%,解密文件后哦进度完成20%,读取数据后进度完成30%,重新整理插入数据后进度完成60%,再加密,进度为80%,再压缩进度为90%,再发送进度为95%,删除历史记录结束动作进度为100%。这种事就要多线程去完成,调用控件你就需要委托或者回调控件。
进度条给他赋值就好了,程序运行后你会发现进度条在动。
这是现在90%程序进度条原理。
程序底部状态栏吧? 工具箱 - 菜单和工具栏 选项卡下 有个 StatusStrip 拖到窗体上就跑下面了 点击它,弹出菜单中 选择 ProgressBar 就指定 进度条在 状态栏上了。 你原来添加的PB可以删除了。
该实例有很多实现方法,下面介绍一种不同的给你:
首先要在窗体中载入以下控件:progressbar(进度条),label(用来实时显示文本提示),两个timer(分别控制进度条进度的增减),然后用以下代码就能实现:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
Timer1.Interval = 500
Timer2.Interval = 500
ProgressBar1.Value = 0
ProgressBar1.Maximum = 100
ProgressBar1.Minimum = 0
End Sub
'上述过程是设置控件的初始值,也可以在属性面板设置
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Value += 1
Label1.Text = "当前完成" ProgressBar1.Value "%"
If (ProgressBar1.Value = 100) Then
Timer1.Enabled = False
Timer2.Enabled = True
End If
End Sub
'timer1用来控制进度的增加
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
ProgressBar1.Value -= 1
Label1.Text = "当前完成" ProgressBar1.Value "%"
If (ProgressBar1.Value = 0) Then
Timer1.Enabled = True
Timer2.Enabled = False
End If
End Sub
'time2用来控制进度的减少
End Class
VB本身有进度条控件。程序启动时加载多少控配置,组件都是编写源码时可知的。进度条的上限就是加载组件,配置数的和,加载成功一个就自加1
这个不象是怎么传递Pr值的问题吧,是不是读取过程中卡啊?
在pr=J 下面加一句My.Application.DoEvents() ,暂时释放一下控制权,使程序去处理完其它事件。再说不需要时间控件,直接在循环过程中修改进度值也可以,然后来一句My.Application.DoEvents()。