Я прочитал ряд примеров использования объектов BackgroundWorker для обработки выполняющихся задач с большим количеством времени, которые генерируют результаты, которые используются для заполнения DataGridView. Однако в моем случае кажется, что актом заполнения DataGridView является то, что занимает больше всего времени. Мне интересно, если это необходимо, потому что мне нужно отформатировать результаты (скрыть определенные столбцы, проверить определенные флаги в каждой строке, чтобы установить цвет/шрифт и т. Д.).Многопоточность форматирования строк datagridview?
Пример:
DataTable results_table;
DataGridView my_grid;
DataView my_view;
private void fillTable()
{
// Generate the results
...
// Bind the data.
my_view.Table = results_table;
my_grid.DataSource = my_view
// Format the results
my_grid.Columns[0].Visible = false;
my_grid.Columns[1].Visible = false;
my_grid.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
my_grid.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
foreach (DataGridViewRow row in my_grid.Rows)
{
// Check for flags and format necessary rows.
}
}
Является ли это правильный путь идти об этом, или есть какой-то другой способ форматирования результатов без перебора каждой строки?
Как указал Фредрик, использование свойства «AutoSizeMode» (особенно когда оно было установлено на «AllCells») вызывало самую большую задержку. Теперь все столбцы настроены на «Заполнить», и даже с форматированием строки за строкой (выделение жирным шрифтом, подчеркивание и т. Д.) Поражение производительности значительно менее значимо. – themarshal