我目前有一个运行几个“激烈”查询的程序。我添加了一个文本框,并在查询开始时提供了状态更新,eding和剩余的数量。这将满足我的需要,但在所有查询完成之前,文本框并不会显示任何内容。然后它会立即显示所有更新。我假设更新另一个线程中的文本框可以解决这个问题,那就是我迷失的地方。我如何使用从主窗体运行查询接收消息并将其显示在文本框中的线程?使用vb.net中的线程进度“bar”
3
A
回答
8
BackgroundWorker
component适合您的需要(示例代码在MSDN链接中有)。您处理其DoWork
事件并在其中执行实际查询。您通过调用ReportProgress
方法来报告进度。要显示报告的进度,您应该处理其ProgressChanged
事件并更新UI。通过调用后台工作人员的RunWorkerAsync
方法开始工作。使用BackgroundWorker
可以免除手动启动和停止线程以及与UI线程通信以更新进度栏。
1
最简单的方法是使用BackgroundWorker,处理它的DoWork事件并使用ProgressChanged事件向progressBar报告进度。
开始:
worker.RunAsync()
报告进展情况:
worker.ReportProgress(10) 'for 10%
1
添加到什么迈赫达德和Alex发布,这里是如何处理由ReportProgess
法(ProgressChanged
)引发事件更新进度吧:
Private Sub backgroundWorker_ProgressChanged ByVal sender As Object, ByVal e As ProgressChangedEventArgs) Handles backgroundWorker.ProgressChanged
Me.progressBar1.Value = e.ProgressPercentage
End Sub
3
BackgroundWorker是一个用于在后台线程上进行密集工作的良好通用方法。但是,由于您的问题听起来像是在进行数据库操作,因此在ADO.Net中使用native support进行异步操作可能更容易。您可以使用callbacks作为进度条。
相关问题
- 1. vb.net中的进度条线程
- 2. 使用GZipStream计算进度(bar)
- 3. 使用线程的FIFO进程调度
- 4. 如何使用线程加载Bar WinForm?
- 5. 使用Swing进度条的多线程
- 6. 在vb.net中使用进度条
- 7. 使用VB.NET操纵线程
- 8. VB.NET中的线程
- 9. 进度使用线程在SWT
- 10. 使用线程显示进度条
- 11. 使用线程刷新进度条UI
- 12. 使用线程实现进度控制
- 13. VB.net - 使用BackgroundWorker的进度条
- 14. 线程进度条
- 15. 在VB.Net中使用多线程
- 16. VB.NET假进度
- 17. VB.NET进度条
- 18. 的VB.NET线程
- 19. 进程线程调度
- 20. 多线程进度条和代码位置(vb.net)?
- 21. Java中的加密线程的进度
- 22. 如何使用jProgress bar进行ProcessBuilder进程?
- 23. 在android中使用线程处理进度相关的问题!
- 24. Android中的线程进度条
- 25. “Destroy”进度条中的线程
- 26. 线程中的VB.NET RaiseEvent
- 27. vb.net与winform中的线程
- 28. VB.Net中的线程安全
- 29. VB.net中的线程处理
- 30. Vb.net中的线程问题
哈哈,我只是想说。我似乎无法回答得太快。 – jrsconfitto 2010-01-25 21:13:37
哈,我甚至没有想过在不同的线程中执行查询。我会尝试的。 – Shawn 2010-01-25 21:14:47
@Jugglingnutcase - 我总是有同样的问题!有一天,我回答了一个问题,指向与其他人相同的网址,但他比我快5秒钟lol – Dave7896 2010-01-25 21:17:45