長いロード時間中にユーザーに何かを見つめるために、無限ループの進行状況バーが必要です。現在、ユーザーが実行する SQL クエリを選択すると、クエリ結果のグリッドビューを含む別の winform に結果が表示されます。私の目標は、結果フォームのグリッドビューのレンダリングが終了するまで無限にいっぱいになり、何度もリセットされるプログレスバーを持つ別のwinform(ロードフォーム)を持つことです。パフォーマンスのためにマルチスレッドが必要になると思われるため、バックグラウンドワーカーを試しましたが、ロードフォームは表示されません。基本的に、実行計画は次のようになります。
ユーザーが実行ボタンをクリックし、ロード フォームにプログレス バーを表示する (無限ループ)、クエリを実行し、結果フォームをロードする ロード フォームのプログレス バーを閉じる
上記の実行はメインフォームから呼び出されます
Private Sub LoadingForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
pbSqlCall.Minimum = 0
pbSqlCall.Maximum = 100
pbSqlCall.Step = 10
Dim Counter As Integer = 0
While Counter < 100
pbSqlCall.Increment(10)
Counter += 10
If Counter = 100 Then
Counter = 0
pbSqlCall.Value = 0
End If
End While
End Sub
BackgroundWorker1.RunWorkerAsync()
ExecuteQuery(Parameters, Queries.Item(ddlQueries.SelectedIndex))
'Not sure how to close the form using the thread
Private Sub BackgroundWorker1_DoWork(sender As System.Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
lf.ShowDialog() 'Load form
End Sub