Хотя на SO есть масса вопросов/ответов относительно обновления элемента управления GUI из рабочего потока с использованием Control.Invoke, я не смог получить ясность по теме чтения данных из элемента управления без его обновления.
Пример: у меня есть DataGridView в форме Windows. Из рабочего потока я хочу проверить значение конкретной ячейки в 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;
}
}