При написании многопоточного приложения и работой с таблицей (dataGridView) возникает зависание формы из-за попытки добавления данных в таблицу из неосновного потока. Такая причина выявляется при тестировании софта в режиме Debug, система вам выдаст исключение, что нельзя добавить строку в таблицу из другого потока (нарушение безопасности). Для решения данной проблемы необходимо использовать Метод Invoke: dataGridView1.Invoke((MethodInvoker)(() => dataGridView1.Rows.Add("test1", "test2"))); Код dataGridView1.Invoke((MethodInvoker)(() => dataGridView1.Rows.Add("test1", "test2")));
Раньше грид зависал во время работы программы, когда выполнялся длительный цикл. Чтобы этого не происходило, я использовал асинхронные потоки
Как вариант можно так this.Invoke((MethodInvoker) delegate { dataGridView1.Rows.Add("test1", "test2") });