我创建了一个软件,允许我在在线数据库上同步大量数据。现在我有一个名为Synchronization
的表单,当用户打开此表单时,在Form Load event
我执行一个名为SyncData
的函数。此功能运行良好,但我想显示ProgressBar
表单上Synchronization
可用的百分比进度。我把这个函数称为:
Dim thread As New Thread(AddressOf SyncData)
thread.Start()
正如我所解释的,上面的代码位于Form Load Event
。本质上,我的SyncData
函数有一个循环,遍历本地数据库上可用的所有记录并执行insert / update / remove语句。我怎么能在类似的事情上取得成就?
答案 0 :(得分:2)
这是一种方法。
Imports System.Threading
Public Class Form1
Dim syncThread As New Thread(AddressOf SyncData)
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
syncThread.IsBackground = True
syncThread.Start()
End Sub
Private Sub SyncData()
Dim dt As DataTable ' = your data you are using
invokeme(Sub() ProgressBar1.Maximum = dt.Rows.Count)
For Each row In dt.Rows
'do your syncing
invokeme(Sub() ProgressBar1.Increment(1))
Next
End Sub
Public Sub invokeme(ByVal iaction As Action)
If InvokeRequired Then
Invoke(iaction)
End If
End Sub
End Class
所以你只需要invokeme sub然后将progressbar的max设置为行数,并在每行完成后使用这一行:
invokeme(Sub()ProgressBar1.Increment(1))