Загрузка...

Устраняем зависание dataGridView C#

Тема в разделе C# создана пользователем RaysMorgan 2 ноя 2016. 1472 просмотра

  1. RaysMorgan
    RaysMorgan Автор темы 2 ноя 2016 https://lolz.live/support-tickets/open 51 811 7 мар 2013
    При написании многопоточного приложения и работой с таблицей (dataGridView) возникает зависание формы из-за попытки добавления данных в таблицу из неосновного потока. Такая причина выявляется при тестировании софта в режиме Debug, система вам выдаст исключение, что нельзя добавить строку в таблицу из другого потока (нарушение безопасности).

    Для решения данной проблемы необходимо использовать Метод Invoke:
    Код
    dataGridView1.Invoke((MethodInvoker)(() => dataGridView1.Rows.Add("test1", "test2")));
     
  2. chtozor
    chtozor 15 дек 2016 2 29 авг 2016
    Раньше грид зависал во время работы программы, когда выполнялся длительный цикл.
    Чтобы этого не происходило, я использовал асинхронные потоки
     
  3. RaysMorgan
    RaysMorgan Автор темы 15 дек 2016 https://lolz.live/support-tickets/open 51 811 7 мар 2013
    chtozor, код в студию
     
  4. chtozor
    chtozor 15 дек 2016 2 29 авг 2016
    Сейчас точно не найду, но помню что использовал async;await
     
  5. sashf1999
    sashf1999 8 мар 2019 Сделаю софт на заказ: https://goo.gl/2R9Ffs 3 26 мар 2018
    Как вариант можно так
    this.Invoke((MethodInvoker) delegate { dataGridView1.Rows.Add("test1", "test2") });
     
Загрузка...
Top