好的,这是东西:
我有一个linq查询,加载大约。将1000行输入一个变量,在此过程中,我想显示一个进度条,不一定要说明百分比,可以是选取框样式,没关系。
此进度栏采用模态形式,可在查询运行时阻止用户与应用进行交互。
现在这是我的代码:
Private Sub LoadBar()
Try
Dim load As New frmLoadbar
load.Text = "Loading bunch of data..."
load.ShowDialog()
Catch e As Threading.ThreadAbortException
Threading.Thread.ResetAbort()
End Try
End Sub
在另一个子目录中:
Dim myThreadDelegate As New Threading.ThreadStart(AddressOf LoadBar)
Dim th As New Threading.Thread(myThreadDelegate)
th.Name = "TimeConsuming"
th.Start()
Dim XY = db.Table.GetEnumerator
While XY.MoveNext
Dim item As New ListViewItem
item.Text = XY.Current.Name
item.Tag = XY.Current
ListBox1.Items.Add(item)
End While
Autos.Dispose()
Try
th.Abort()
Catch ex As Exception //here's where i 'swallow the re-thrown exception
End Try
但这并不是我编写过的最丑的代码之一,但我只是不想让那个重新抛出的异常起作用。
一些解释:
那个异常(exception)。
现在我知道我可以像下面这样实现:
定期获取 bool 值,如果为true,则形式可以
关闭自己。
查询完成后,将boolean值设置为true。
但是我的问题来了:
什么是实现此目标的最佳方法?
为此专门发明的,但是我可以使用背景吗
worker 作为显示进度栏的线程?
显示我的原始形式的模态形式),那意味着
该查询将“在后台工作”?
我研究了其他教程,但是由于一个或另一个原因,我要么不能复制它(由于复杂),要么我不相信它比这更好。
感谢您抽出宝贵的时间回答。
最佳答案
您可以显示模式形式,然后从该形式运行BackgroundWorker
。进度和已完成的事件将在UI线程上,因此您可以在进度条运行时更新进度条,并在已完成的事件处理程序中关闭表单。
关于vb.net - 如何在LINQ查询期间正确实现多线程进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7955770/