多线程化datagridview行的格式?

the*_*hal 1 .net c# multithreading datagridview winforms

我已经阅读了许多关于使用BackgroundWorker对象来处理执行时间密集型任务的示例,这些任务生成用于填充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.
    }
}
Run Code Online (Sandbox Code Playgroud)

这是正确的方法,还是有其他方法来格式化结果而不必遍历每一行?

Ada*_*son 5

您无法在另一个线程中实际执行格式化,因为所有处理UI元素的操作都必须在UI线程上进行.您可以做的最好的事情是预先进行处理和决策,以便实际与GUI交互的代码尽可能简单和精简.