C# 在DataGridView中移动并加载图片而不冻结UI
我有一个C# 在DataGridView中移动并加载图片而不冻结UI,c#,datagridview,C#,Datagridview,我有一个DataGridView,用户在其中通过keypup和keypdown移动 现在,我使用keyup事件根据一列中的值刷新imageBox中的图像。如果用户只向下或向上移动一行,它就可以正常工作。问题是,如果用户想通过上下几次键快速移动几行,UI总是会冻结一段时间 如何防止UI冻结,并使图片加载成为“后台工作” 到目前为止,我的代码: private void LoadPicture(string path) { threadworker = new Thread(() =>
DataGridView
,用户在其中通过keypup和keypdown移动
现在,我使用keyup事件根据一列中的值刷新imageBox中的图像。如果用户只向下或向上移动一行,它就可以正常工作。问题是,如果用户想通过上下几次键快速移动几行,UI总是会冻结一段时间
如何防止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());
}
}
我有一个有用的想法: 创建一个子例程,在网格移动和LoadPicture之间执行操作。取而代之的是调用LoadPicture,调用该例程 此例行程序将: 1-获取当前网格行或图片名称 2-启动任务。延迟几毫秒甚至1秒 3-再次将当前网格行或图片放入另一个变量,并与第一个变量进行比较(步骤1)
如果没有更改,请调用LoadPicture…不要在单独的线程中访问GUI控件。不要使用空的Twit-Cask.OK,现在不尝试捕捉任何解决方案。考虑使用异步任务,它不会阻止UI,但图像将被显示为一个延迟。告诉我它是如何运行的,或者如果您需要关于如何执行此操作的代码片段。