我有一个WinForms应用程序,我正在尝试根据在datagridview中输入的数据添加启动多个操作的功能。必须同步运行这些操作,以便在将行插入数据库之前监视它们是否成功完成,以指示操作已成功完成。我还在操作上有一个状态事件处理程序,它将返回正在运行的操作的百分比。
到目前为止,我正在使用线程来启动操作,但是它正在更新其中一个线程的进度。当该线程完成时,它继续前进,并将一直工作直到完成。我希望他们两个或多个同时运行,并能够报告每个的状态。
我基本上循环遍历网格中的行,并使用那里的值来实例化我创建的新类。然后我创建一个线程并启动一个子来执行新对象的操作。我想我可能很接近,因为我知道他们都已经开始了,但他们只是一个接一个地跑,而不是一下子。
感谢任何帮助。
答案 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。
希望这些信息有所帮助。