启动并显示多个同步操作的进度

时间:2009-12-02 21:24:00

标签: .net vb.net winforms

我有一个WinForms应用程序,我正在尝试根据在datagridview中输入的数据添加启动多个操作的功能。必须同步运行这些操作,以便在将行插入数据库之前监视它们是否成功完成,以指示操作已成功完成。我还在操作上有一个状态事件处理程序,它将返回正在运行的操作的百分比。

到目前为止,我正在使用线程来启动操作,但是它正在更新其中一个线程的进度。当该线程完成时,它继续前进,并将一直工作直到完成。我希望他们两个或多个同时运行,并能够报告每个的状态。

我基本上循环遍历网格中的行,并使用那里的值来实例化我创建的新类。然后我创建一个线程并启动一个子来执行新对象的操作。我想我可能很接近,因为我知道他们都已经开始了,但他们只是一个接一个地跑,而不是一下子。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

如果它们一个接一个地运行,那么听起来它们不是以线程形式运行的。我建议确保您的线程异步运行。

然后当他们同时运行时,您可以使用代理人向主要流程报告并显示您的进度。

您可以使用:

 Delegate Sub delShowProgressOne(ByVal Row As Integer, ByVal Percent As Double)
  Sub ShowProgressOne(ByVal Row As Integer, ByVal Percent As Double)
    If Me.InvokeRequired Then
      Me.Invoke(New delShowProgressOne(AddressOf ShowProgressOne), Row, Percent)
    Else
      DGV.Rows(Row).Cells("Progress").Value = Percent
    End If
  End Sub

显示线程内的进度。它将函数的实际调用发送到Form的线程,但仅用于执行ShowProgress。

希望这些信息有所帮助。