好的,这就是事情:
我有一个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
这不是我写过的最丑陋的代码之一。它的作用我只是不想要那个重新抛出的例外。
一些解释:
现在我知道我可以像下面这样实现:
但是我的问题出现了:
实现这个的最好方法是什么?
我已经查看了其他教程,但由于某种原因,要么我无法复制它(由于复杂性),要么我不相信它比这更好。
感谢您抽出时间回答。
答案 0 :(得分:1)
您可以显示模态表单,然后从该表单运行BackgroundWorker
。进度和已完成的事件将在UI线程上,因此您可以在运行时更新进度条并在已完成的事件处理程序中关闭表单。
答案 1 :(得分:1)
答案 2 :(得分:0)
假设使用Windows窗体,您可以使用BackgroundWorker component。
执行此操作