移动DataGridView并加载图片而不冻结UI

时间:2017-06-16 19:02:48

标签: c# datagridview

我有一个DataGridView用户正在通过keyup和keydown。

现在我使用keyup Event刷新imageBox中的图像,具体取决于一列的值。如果用户只向下或向上移动一行,它可以正常工作。问题是,如果用户通过向上或向下敲击几次快速移动几行,则UI总是会冻结一段时间。

如何防止冻结用户界面并使图片加载“后台作业”?

到目前为止我的代码:

private void LoadPicture(string path)
{
    threadworker = new Thread(() => pictureBox1.Image = path);
    threadworker.Start();
}

public void datenübergeben()
{
    if (dataGridView1.CurrentRow.Cells["Bild1"].Value.ToString().Length != 0)
    {
        LoadPicture(dataGridView1.CurrentRow.Cells["Bild1"].Value.ToString());
    }
}

1 个答案:

答案 0 :(得分:0)

我有一个可以有用的想法:

创建一个子例程,在Grid移动和LoadPicture之间进行操作。你调用LoadPicture,调用那个例程。

此例程将:

1-获取当前的GRID行或图片名称;

2-启动Task.Delay几毫秒甚至1秒;

3-再次获取当前GRID行或图片到另一个变量并与第一个变量进行比较(步骤1);

如果没有变化,请调用LoadPicture ...