Я написал этот код для чтения тысяч строк из файлов Excel и загрузки их в DataGridView.
Но проблема, с которой я сталкиваюсь, заключается в том, что независимо от того, какой файл я загружаю, DataGridView показывает строки только из первого файла, а список _ не очищается.
public class MyForm : Form
{
private List<Student> _list = null;
private void LoadFile_Click(object sender, EventArgs e)
{
try
{
if (_list != null)
{
_list.Clear();
}
openFileDialog1.ShowDialog();
_connStr = MakeConnectionString.GetConnectionString(openFileDialog1.FileName);
if (!string.IsNullOrEmpty(_connStr))
{
backgroundWorker1.RunWorkerAsync();
}
}
catch
{
MessageBox.Show("Application is busy with the first task!", "Busy...", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
return;
}
IDataReader read = StudentDA.GetReader(_connStr);
List<Student> localList = null;
if (_list != null)
{
_list.Clear();
}
_list = StudentMapper.GetStudents(read);
localList = new List<Student>(_list);
dataGridView1.Invoke(new MethodInvoker(delegate
{
dataGridView1.Rows.Clear();
}));
foreach (Student std in localList)
{
dataGridView1.Invoke(new MethodInvoker(delegate
{
dataGridView1.Rows.Add(std.SerialNo, std.RollNo);
}));
}
}
}