Here’s a small example in VB.NET that shows how to use the BGW to perform an SQL query while the first Form show a progress bar and then displays the second Form once the SQL operation as completed.
Imports System.Data.OleDb Module Module1 Public da As New OleDbDataAdapter Public ds As New DataSet End Module
Imports System.Text Imports System.Collections Imports System.ComponentModel Imports System.Data.OleDb Public Class Form1 Dim WithEvents bgw As New BackgroundWorker Delegate Sub HideButtonDelegate() Public HBD As HideButtonDelegate = AddressOf Me.HideButton Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click bgw.WorkerSupportsCancellation = True ProgressBar1.Show() bgw.RunWorkerAsync() End Sub Private Sub bgw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles bgw.DoWork 'Do your lenghty operations here Dim MyConnection As New System.Data.OleDb.OleDbConnection() Dim MyCommand As OleDbCommand Try MyConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data source=" & Application.StartupPath & "\Database1.accdb" MyConnection.Open() Catch ex As Exception MessageBox.Show("Cannot connect to the specified database" & ex.Message) End Try Try MyCommand = New OleDbCommand("SELECT * FROM Table1", MyConnection) da.SelectCommand = MyCommand ds = New DataSet da.Fill(ds, "Table1") Catch ex As Exception MessageBox.Show("Cannot fetch data from the database" & ex.Message) End Try System.Threading.Thread.Sleep(2000) If Button1.InvokeRequired Then Me.Invoke(HBD) End If System.Threading.Thread.Sleep(2000) End Sub Private Sub bgw_Completed(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs) Handles bgw.RunWorkerCompleted ProgressBar1.Hide() Me.Hide() Form2.Show() End Sub Private Sub HideButton() Button1.Visible = False End Sub End Class
Public Class Form2 Private Sub Form2_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed Form1.Close() End Sub Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load DataGridView1.DataSource = ds.Tables(0) End Sub End Class
Where is the progress bar turn here?
ReplyDeletePlz.help.