虽然关于使用 Control.Invoke 从工作线程更新 GUI 控件的问题/答案有很多,但我无法清楚地了解从控件读取数据而不更新它的主题。
示例:我在 Windows 窗体上有一个 DataGridView。从工作线程中,我想检查 DGV 上特定单元格的值,但我不需要/不想更新该值。从工作线程中,我调用一个方法,该方法将 DataGridView 对象作为其唯一参数,然后该方法检查 DataGridView 中的特定单元格但不修改它,在这种情况下我需要使用 .Invoke 吗?
现在,如果不使用 .Invoke,代码似乎运行良好,没有明显的警告。但是,我不清楚这是否安全,因为它不会更新 DGV,而是只查看 DGV 的单元而不修改任何单元。
有人可以对此有所了解吗?如果这是一个重复的问题,我很抱歉,但我找不到任何其他问题,这些问题专注于在多线程情况下只阅读控件而不更新/修改它。
谢谢。
从工作线程调用的示例方法:
private DataGridViewRow getRowObject(DataGridView dgv)
{
foreach (DataGridViewRow row in dgv.Rows)
{
if ((int)dgv[specialColumn, row.Index].Value == 100)
return row;
}
}