for i as integer =0 to 5000 利用第二个线程显示进度条怎么办?
我想学习一下多线程开发,一个简单的想法是在for循环的同时显示进度条。
代码如下:
- VB.NET code
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ProgressBar1.Maximum = 5000 For i As Integer = 1 To 5000 ’要在这里开第二个线程用于进度条的显示 BackgroundWorker1.RunWorkerAsync(i) Next End Sub ‘以下代码不会写了,请指点! Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork ‘不会写了 End Sub Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged ’不会写了 End SubEnd Class
[解决办法]
你搞错了,应该把花费时间的操作(在这里是你的For循环)放在BackgroundWorker1_DoWork里,Button1_Click事件里只是触发BackgroundWorker组件,具体的方法MSDN上有一个很简单的例子:
http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker.aspx