如何增加线程状态的进度条百分比



我创建了一个软件,可以让我同步在线数据库上的大量数据。现在我有一个名为 Synchronization 的表单,当用户打开此表单时,在Form Load event中我执行一个名为 SyncData 的函数。这个函数运行良好,但我想显示Synchronization表单上可用ProgressBar进度的百分比。我像这样调用函数:

Dim thread As New Thread(AddressOf SyncData)
thread.Start()

正如我所解释的,上面的代码位于Form Load Event中。本质上,我的SyncData函数有一个循环,该循环遍历本地数据库上所有可用的记录并执行插入/更新/删除语句。我如何在类似的事情上实现?

这里有一种方法可以做到这一点。

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() ProgressBar1.Increment(1))

最新更新