如何在使用SqlDataReader的while循环中使用backgroundworker?我有一个代码,可以将远程数据库中的记录与本地数据库中的记录进行比较。如果不匹配,它将添加到新记录列表中。如果存在匹配项,但date_modified字段不同,则它将添加到更新列表中。我的代码工作正常,但由于表中记录太多,有时我的程序挂起,因此我无法在UI中向用户提供任何信息。为此,我需要使用backgroundworker。那我该怎么办呢?
我的代码是这样;
remote_query = "SELECT ID,DATE_MODIFIED FROM REMOTE_TABLE";
remote_connect();
remote_command = new SqlCommand(remote_query,remote_coonnection);
SqlDataReader remote_reader = remote_command.ExecuteReader();
while (remote_reader.Read())
{
local_query = "SELECT ID,DATE_MODIFIED FROM LOCAL_TABLE WHERE ID=" + remote_reader[remote_reader.GetOrdinal("ID")].ToString();
local_connect();
local_command = new SqlCommand(local_query,poscon);
SqlDataReader local_reader = local_command.ExecuteReader();
if (local_reader.HasRows)
{
while (local_reader.Read())
{
if (remote_reader[remote_reader.GetOrdinal("DATE_MODIFIED")].ToString() != local_reader[local_reader.GetOrdinal("DATE_MODIFIED")].ToString())
{
string[] line = { remote_reader[remote_reader.GetOrdinal("ID")].ToString(),remote_reader[remote_reader.GetOrdinal("DEFINITION_")].ToString() };
var item = new ListViewItem(line);
list_of_to_be_updated.Items.Add(item);
}
}
}
else
{
string[] line = { remote_reader[remote_reader.GetOrdinal("ID")].ToString(),remote_reader[remote_reader.GetOrdinal("DEFINITION_")].ToString() };
var item = new ListViewItem(line);
list_of_to_be_inserted.Items.Add(item);
}
}