在vb.net中使用线程进行"bar"

Sha*_*awn 3 vb.net multithreading progress

我目前有一个运行几个"激烈"查询的程序.我添加了一个文本框,并在查询开始时显示状态更新,结果以及剩余的数量.这可以满足我的需要,但是在完成所有查询之前,文本框实际上不会显示任何内容.然后它立即显示所有更新.我假设在另一个线程中更新文本框会解决这个问题,这就是我迷失的地方.如何使用从运行查询的主窗体接收消息并将其显示在文本框中的线程?

Meh*_*ari 8

BackgroundWorker组件适合您的需要(MSDN链接中有示例代码).您处理其DoWork事件并在其中执行实际查询.您可以通过调用其ReportProgress方法来报告进度.要显示报告的进度,您应该处理其ProgressChanged事件并更新UI.您可以通过调用RunWorkerAsync后台工作程序的方法来启动作业.使用BackgroundWorker可以减轻您手动启动和停止线程以及与UI线程通信以更新进度条的麻烦.