【问题标题】:Starting and displaying progress of multiple synchronous operations启动和显示多个同步操作的进度
【发布时间】:2009-12-02 21:23:59
【问题描述】:

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

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

我基本上是遍历网格中的行并使用那里的值来实例化我创建的新类。然后我正在创建一个线程并启动一个子程序以从新对象执行操作。我想我可能已经接近了,因为我知道它们都在启动,但它们只是一个接一个地运行,而不是同时运行。

感谢任何帮助。

【问题讨论】:

    标签: .net vb.net winforms


    【解决方案1】:

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

    然后当它们同时运行时,您可以使用委托向主流程报告并显示您的进度。

    你可以用这个:

     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
    

    从您的线程中显示进度。它将函数的实际调用发送到窗体的线程,但仅用于执行 ShowProgress。

    希望这些信息对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 2023-03-10
      • 2017-04-12
      • 2018-02-21
      • 1970-01-01
      • 2011-08-29
      相关资源
      最近更新 更多