У меня проблема с BackgroundWorker
!Когда я получаю данные из базы данных и пытаюсь передать данные в RunWorkerCompleted
, я получаю сообщение об ошибке:
System.NullReferenceException Ссылка на объект не указывает, что экземпляр объекта e был нулевым.
проблема возникает в e.Result = dataTable;
private void BackgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
string Refresh = "dbo.GetRenderedService '" + dateTimePicker2.Value.Date.ToString() + "','" + dateTimePicker4.Value.Date.ToString() + "'";
DataTable dataTable = DbConnection.DBConnect(Refresh);
int i = 1;
try
{enter code here
foreach (DataRow dr in dataTable.Rows)
{
backgroundWorker1.ReportProgress(i);
Thread.Sleep(100);
i++;
}
e.Result = dataTable;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void BackgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
progBar.Value = e.ProgressPercentage;
}
private void BackgroundWorker1_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
{
source.DataSource = e.Result;
dataGridView1.DataSource = source;
dataGridView1.Columns[0].Visible = false;
dataGridView1.Columns[1].Visible = false;
dataGridView1.Columns[2].Visible = false;
dataGridView1.Columns[3].Visible = false;
dataGridView1.Columns[4].Visible = false;
dataGridView1.Columns[5].Visible = false;
dataGridView1.Columns[6].Visible = false;
}
Это класс для извлечения данных из SQL Server.
class DbConnection
{
public static string connectionString = "Data Source=POTITPC-01\\PLMLOCAL;Initial Catalog=Batys;User ID=sa;Password=!sql123;";
public static DataTable DBConnect(string query)
{
SqlConnection conn = new SqlConnection(connectionString);
SqlDataAdapter da = new SqlDataAdapter(query, conn);
DataTable dataTable = new DataTable();
try
{
conn.Open();
da.Fill(dataTable);
conn.Close();
conn.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return dataTable;
}