using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Threading;
namespace Chapter_04
{
public partial class ProcessUsingBackgroundWorkersForm : Form
{
public ProcessUsingBackgroundWorkersForm()
{
InitializeComponent();
}
internal void SetStatus(string Status)
{
this.toolStripStatusLabel1.Text = Status;
this.statusStrip1.Refresh();
}
internal string ConnectionString, FirstCommandText, SecondCommandText;
internal DataTable FirstTable, SecondTable;
public static void ProcessQueriesAndDisplayResults(string ConnectionString, string FirstCommandText, string SecondCommandText)
{
using (ProcessUsingBackgroundWorkersForm form = new ProcessUsingBackgroundWorkersForm())
{
form.Show();
form.Focus();
form.ConnectionString = ConnectionString;
form.FirstCommandText = FirstCommandText;
form.SecondCommandText = SecondCommandText;
form.firstQueryBackgroundWorker.RunWorkerAsync();
form.secondQueryBackgroundWorker.RunWorkerAsync();
form.SetStatus("Executing queries asynchronously...");
form.Visible = false;
form.ShowDialog();
}
}
private void firstQueryBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
using (SqlDataAdapter da = new SqlDataAdapter(FirstCommandText, ConnectionString))
{
FirstTable = new DataTable();
da.Fill(FirstTable);
}
}
private void firstQueryBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
firstResultsGrid.DataSource = FirstTable;
SetStatus("Processed results of first query!");
}
private void secondQueryBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
using (SqlDataAdapter da = new SqlDataAdapter(SecondCommandText, ConnectionString))
{
SecondTable = new DataTable();
da.Fill(SecondTable);
}
}
private void secondQueryBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
secondResultsGrid.DataSource = SecondTable;
SetStatus("Processed results of second query!");
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Threading;
namespace Chapter_04
{
public partial class ProcessUsingBackgroundWorkersForm : Form
{
public ProcessUsingBackgroundWorkersForm()
{
InitializeComponent();
}
internal void SetStatus(string Status)
{
this.toolStripStatusLabel1.Text = Status;
this.statusStrip1.Refresh();
}
internal string ConnectionString, FirstCommandText, SecondCommandText;
internal DataTable FirstTable, SecondTable;
public static void ProcessQueriesAndDisplayResults(string ConnectionString, string FirstCommandText, string SecondCommandText)
{
using (ProcessUsingBackgroundWorkersForm form = new ProcessUsingBackgroundWorkersForm())
{
form.Show();
form.Focus();
form.ConnectionString = ConnectionString;
form.FirstCommandText = FirstCommandText;
form.SecondCommandText = SecondCommandText;
form.firstQueryBackgroundWorker.RunWorkerAsync();
form.secondQueryBackgroundWorker.RunWorkerAsync();
form.SetStatus("Executing queries asynchronously...");
form.Visible = false;
form.ShowDialog();
}
}
private void firstQueryBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
using (SqlDataAdapter da = new SqlDataAdapter(FirstCommandText, ConnectionString))
{
FirstTable = new DataTable();
da.Fill(FirstTable);
}
}
private void firstQueryBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
firstResultsGrid.DataSource = FirstTable;
SetStatus("Processed results of first query!");
}
private void secondQueryBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
using (SqlDataAdapter da = new SqlDataAdapter(SecondCommandText, ConnectionString))
{
SecondTable = new DataTable();
da.Fill(SecondTable);
}
}
private void secondQueryBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
secondResultsGrid.DataSource = SecondTable;
SetStatus("Processed results of second query!");
}
}
}