我在UserForm应用程序中有DataGridView
,我使用BackgroundWorker
从SQL服务器填充,以保持用户检查已加载数据的能力。
我的理念是:
Thread
中的数据,在DataGridView
BackgroundWorker
,我循环While
直到请求新数据或无限期。我的问题是,只有在主DataGridView
中调用数据时才会填充Thread
中的数据,但不会来自bw_ProgressChanged
。
如果我在主While
中调用Thread
循环,它可以正常工作,因此数据库读取正常。
使用DB和DataGridView的方法:
private void SendRequest(string sql)
{
sqlDataReader = new SqlCommand(sql, connection).ExecuteReader();
}
private void GetResponse()
{
dt.Load(sqlDataReader, LoadOption.PreserveChanges);
sqlDataReader.Close();
}
private void UpdateTable()
{
dtAll.DataSource = dt; //dtAll DataTable binded to DataGridView
}
BackgroundWorker
活动:
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
int i = 0;
while (true)
{
SendRequest("select top 5 * from table_1 order by tag");
GetResponse();
bw.ReportProgress(i);
i++;
Thread.Sleep(500);
}
}
private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
Debug.WriteLine(e.ProgressPercentage);
UpdateTable();
}
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}