首页 > 解决方案 > 有没有办法在 c# 中为 datagridview 异步读取数据?

问题描述

我正在尝试在实体框架中异步填充 datagridview 数据源,但它显示了跨线程错误并且它不起作用,有人知道怎么做吗?非常感谢你

 private async Task FillData()
    {
        await Task.Run(() =>
        {
            Model.AsyncTestDBEntities db = new Model.AsyncTestDBEntities();
            dataGridView1.AutoGenerateColumns = false;
            dataGridView1.DataSource = db.Table_1.ToList();
        });
    }

当我调用上述方法时它不起作用

  private async void button1_Click(object sender, EventArgs e)
    {
        await FillData();
    }

标签: c#winforms

解决方案


使用ToListAsync而不是Task.Run().

private async Task FillData()
{
    var db = new Model.AsyncTestDBEntities();
    var list = await db.Table_1.ToListAsync();
    dataGridView1.AutoGenerateColumns = false;
    dataGridView1.DataSource = list;
}

推荐阅读